Основной вопрос заключается в следующем: Есть ли удобный способ задать многополевое соответствие для всех полей для вложенного запроса? Для обычного запроса { match : { _all : "query string" }}
работ. Это не работает во вложенном запросе, возможно потому, что вложенный объект не имеет _all?Создание вложенного запроса elasticsearch для соответствия по всем полям вложенного объекта
Более подробный вопрос ниже:
У меня есть вложенный документ, который называется «Родитель» следующим образом:
{
"children" : [
{
"field_a": "value_a_1",
"field_b" : "value_b_1",
"field_c" : [ {
"field_c_a" : "value_c_a_1",
"field_c_b" : "value_c_b_1"
} ]
},
{
"field_a": "value_a_2",
"field_b" : "value_b_2",
"field_c" : [ {
"field_c_a" : "value_c_a_2",
"field_c_b" : "value_c_b_2"
} ]
}
]
}
Этого отображение я использовал для создания детей вложенных объектов:
"Parent" : {
"properties" : {
"children" : {
"type" : "nested",
"include_in_parent" : true
}
}
}
И вот запрос, в котором я хочу выбрать несколько терминов, используя совпадение по запросу всех дочерних полей, и термин запрос:
"query" : {
"nested": {
"path" : "children",
"query" : {
"bool" : {
"must" : [
{"multi_match" : {"query": "value_c_a_1", "fields" : ["children.*"]}},
{"term" : {children.field_a : "value_a_1" }}
]
}
}
}
}
Вышеприведенный запрос не работает, потому что я не могу выбрать все поля в запросе на мультимакет для вложенного объекта.
"query" : {
"nested": {
"path" : "children",
"query" : {
"bool" : {
"must" : [
{"multi_match" : {"query": "value_c_a_1", "fields" : ["*_c_a"]}}
]
}
}
}
}
Запрос выше работает, так как сопоставление с образцом позволяет * быть помещены перед строкой, но не после того, как по какой-то причине (?)
Есть хороший сокращенный способ, чтобы выбрать все поля вложенный объект?
Было бы также полезно знать, почему ожидаемые дети. * Wildcard не работает должным образом.