Spring Data Elasticsearch:如何创建具有多个权重的 Completion 对象?

Spring Data Elasticseach: How to create Completion object with multiple weights?

我已经成功地使用 Elasticsearch 和 Spring Boot 构建了一个有效的自动完成服务,但是我无法为我的自动完成句子分配不同的权重。

当我构建 Completion 对象 (org.springframework.data.elasticsearch.core.completion.Completion) 时,我正在使用标准构造函数,接下来,我正在为对象分配权重,例如(我正在使用 Kotlin)

val completion = Completion(arrayOf("Sentence one", "Second sentence"))
completion.weight = 10

(...)

myEntity.suggest = completion

是什么为 Elasticsearch

生成以下 JSON
{
    "suggest" : {
        "input": [ "Sentence one", "Second sentence" ],
        "weight" : 10
    }
}

但是,根据 Elasticsearch 文档 (https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-completion.html),我想实现这样的目标

{
    "suggest" : [
        {
            "input": "Sentence one",
            "weight" : 10
        },
        {
            "input": "Second sentence",
            "weight" : 5
        }
    ]
}

spring-data-elasticsearch可以吗?如果是,我该怎么做?

不,目前 Spring Data Elasticsearch 目前不支持第二种情况。

您显示的两个 JSON 都是有效的,第一个是针对所有具有相同权重的多个输入,第二个是针对多个输入,当 ich 输入具有不同的权重时。

请在 Spring Data Elasticsearch Jira 中提交问题以添加对 Completion 对象的支持以支持这种情况。