Я пытаюсь изучить elasticsearch с помощью простого примера приложения, в котором перечислены цитаты, связанные с людьми. Пример отображения может выглядеть так:
{
"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"]
}
Я хотел бы иметь возможность использовать querystring 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: Да, см. ответ Андрея.