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

时间:2019-06-17 12:34:07

标签: spring-boot spring-data-elasticsearch

我已经使用Spring Boot通过Elasticsearch构建了一个可以正常工作的自动填充服务,但是我无法为自动填充语句分配不同的权重。

在构建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有可能吗?如果是,该怎么办?

1 个答案:

答案 0 :(得分:1)

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

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

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