在我的弹性搜索索引中,我有一个文件,其属性是一个嵌套对象,如下所示:
{
"my_index": {
"mappings": {
"my_type": {
"properties": {
"nested_prop": {
"type": "nested",
"properties": {
"subprop1": {
"type": "boolean"
},
"subprop2": {
"type": "keyword"
}
}
}
}
}
}
}
}
我现在可以使用嵌套查询搜索对象,如下所示:
{
"query": {
"nested": {
"path": "nested_prop",
"query": {
"bool": {
"must": [{
"term": {
"nested_prop.subprop1": "true"
}
}, {
"term": {
"nested_prop.subprop2": "SOME_KEY"
}
}]
}
}
}
}
}
到目前为止一切顺利。我使用来自查询字符串的非常通用的机制来构建我的elasticsearch查询。因此,我希望能够仍然使用"常规"来查询文档。 (非嵌套)查询如下:
{
"query": {
"term": {
"nested_prop.subprop1": "true"
}
}
}
但是,除非我将其包装到nested
查询中,否则我只会使用这种查询获得空结果。
有没有办法对嵌套对象使用简单查询?
答案 0 :(得分:0)
query_string
:https://github.com/elastic/elasticsearch/issues/16551目前无法实现(ES 5.3.1)。
对于其他查询,无论您对嵌套字段执行什么操作,都需要nested
查询才能使用它。