6
基本问题如下: 是否有一种方便的方法来指定嵌套查询的所有字段上的多字段匹配? 对于正常查询{ match : { _all : "query string" }}
的作品。 这可能不会在嵌套查询中工作,因为嵌套对象没有_all?在嵌套对象的所有字段上进行弹性搜索嵌套查询
更详细如下问题:
我有一个名为“父”的嵌套文件如下:
{
"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"]}}
]
}
}
}
}
上面的查询工作,因为该模式匹配允许在字符串前放置一个*,但由于某种原因后(?)
有选择的所有字段一个很好的速记方法一个嵌套对象?
也很高兴知道为什么期望的孩子。*通配符不按预期工作。