Поиск строки запроса по элементам массива в Elastic Search
Я пытаюсь изучить эластичный поиск с помощью простого примера приложения, в котором перечислены цитаты, связанные с людьми. Пример отображения может выглядеть так:
{
"people" : {
"properties" : {
"name" : { "type" : "string"},
"quotations" : { "type" : "string" }
}
}
}
Некоторые примеры данных могут выглядеть так:
{ "name" : "Mr A",
"quotations" : [ "quotation one, this and that and these"
, "quotation two, those and that"]
}
{ "name" : "Mr B",
"quotations" : [ "quotation three, this and that"
, "quotation four, those and these"]
}
Я хотел бы иметь возможность использовать api строки запроса в отдельных предложениях и возвращать людей, которые соответствуют. Например, я мог бы хотеть найти людей, у которых есть цитата, которая содержит (это И это) - которые должны возвращать «Мистер А», но не «Мистер Б», и так далее. Как мне этого добиться?
EDIT1:
Ответ Андрея ниже, кажется, работает, а значения данных теперь выглядят так:
{"name":"Mr A","quotations":[{"value" : "quotation one, this and that and these"}, {"value" : "quotation two, those and that"}]}
Тем не менее, я не могу заставить запрос query_string работать. Следующее не дает результатов:
{
"query": {
"nested": {
"path": "quotations",
"query": {
"query_string": {
"default_field": "quotations",
"query": "quotations.value:this AND these"
}
}
}
}
}
Есть ли способ получить запрос query_string, работающий с вложенным объектом?
Edit2: Да, см. Ответ Андрея.