Highlight по всем индексам через client.msearch


(Alexey) #1

Доброго времени суток.
Очередной вопрос по хайлайтам.

Я создал поля с одинаковыми параметрами и флагом "store": "yes"

"someField1" : { "type" : "string", "analyzer" : "my_analyzer", "store": "yes" }

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

client.msearch({
    body: [
        { index: "dima", type: ["someField1","someField2"] },
        {
            query: {
                match: {
                    _all: "япония"
                }
            }
        },
        {
            highlight: {
                require_field_match: false,
                fields: {
                    "*": {}
                }
            }
        },

    { index: 'ivan', type: 'someField3' },
    {
        query: {
            match: {
                _all: "япония"
            }
        }
    },
    {
        highlight: {
            require_field_match: false,
            fields: {
                "*": {}
            }
        }
    }
]

})

Но получаю в итоге вместо хайлайта

{"responses":[{"took":9,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"max_score":0.095891505,"hits":[{"_index":"dima","_type":"type1","_id":"5","_score":0.095891505,"_source":{"someField1":"Январский дефицит платежного баланса Японии превысил $5 млрд"}}]}},{"error":{"root_cause":[{"type":"search_parse_exception","reason":"failed to parse search source. unknown search element [index]","line":1,"col":2}],"type":"search_phase_execution_except

Я наверное не так подставлю кусок запроса?

{
highlight: {
require_field_match: false,
fields: {
"*": {}
}
}
}

Как запрашивать хайлайт когда ищу сразу по нескольким индексам?

Спасибо)


(Alexey) #2

Вот в таком виде ошибки нет, но и хайлайта тоже нет

client.msearch({
    body: [
        // match all query, on all indices and types
        { index: "dima", type: ["someField1","someField2"] },
        {
            query: {
                match: {
                    _all: "япония"
                }
            }
        },
        {
            highlight: {
                require_field_match: false,
                fields: {
                    _all: {}
                }
            }
        }

Возвращает

{"responses":[{"took":1,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"max_score":0.095891505,"hits":[{"_index":"dima","_type":"someField1","_id":"5","_score":0.095891505,"_source":{"someField1":"Январский дефицит платежного баланса Японии превысил $5 млрд"}}]}}]}


(Igor Motov) #3

highlight должен быть внутри секции с query. То есть структура должна быть такая:

{ index: ..... }
{
  query: {...},
  highlight: {...}
}

(Alexey) #4

Спасибо!


(system) #5

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.