Запрос префикса фразы Elasticsearch на несколько полей

Я новичок в ES, и я пытаюсь создать запрос, который будет использовать phrase_prefix для нескольких полей, поэтому мне не нужно искать несколько раз.

Вот что у меня до сих пор:

{ 
    "query" : { 
        "text" : { 
            "first_name" : { 
                "query" : "Gustavo", 
                "type" : "phrase_prefix" 
            }
        } 
    }
}'

Кто-нибудь знает, как искать более одного поля, например "last_name"?

Ответ 1

Текстовый запрос , который вы используете, был устаревшим (фактически переименованным) некоторое время назад в пользу запроса соответствия . Запрос соответствия поддерживает одно поле, но вы можете использовать запрос multi_match, который поддерживает одни и те же параметры и позволяет выполнять поиск по нескольким полям. Вот пример, который должен вам помочь:

{
    "query" : {
        "multi_match" : {
            "fields" : ["title", "subtitle"],
            "query" : "trying out ela",
            "type" : "phrase_prefix"
        }
    }
}

Вы можете добиться того же, используя Java API, как это:

QueryBuilders.multiMatchQuery("trying out ela", "title", "subtitle")
    .type(MatchQueryBuilder.Type.PHRASE_PREFIX);