Spring Data Elasticseach: как создать объект завершения с несколькими весами?

Мне удалось создать работающую службу автозаполнения с помощью 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? Если да, то как я могу это сделать?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
0
0
97
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Нет, на данный момент второй случай не поддерживается Spring Data Elasticsearch.

Оба JSON, которые вы показываете, действительны, первый для нескольких входов с одинаковым весом, второй для нескольких входов, когда каждый вход имеет разный вес.

Пожалуйста, сообщите о проблеме в Spring Data Elasticsearch Jira, чтобы добавить поддержку объекта Completion для поддержки этого случая.

Другие вопросы по теме