Мне удалось создать работающую службу автозаполнения с помощью 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
что производит следующий JSON для Elasticsearch
{
"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, которые вы показываете, действительны, первый для нескольких входов с одинаковым весом, второй для нескольких входов, когда каждый вход имеет разный вес.
Пожалуйста, сообщите о проблеме в Spring Data Elasticsearch Jira, чтобы добавить поддержку объекта Completion для поддержки этого случая.