繁体   English   中英

如何查询内部对象内的Elasticsearch嵌套文档?

[英]How do I query an Elasticsearch nested document within an inner object?

我正在尝试对Elasticsearch查询(ES 5.6.2)中嵌套文档中的字段进行过滤。 嵌套文档本身就是主文档内部对象中的一个字段。 映射如下所示:

{
    "mappings": {
        "container": {
            "properties": {
                "host": {
                    "properties": {
                        "tags_nested": {
                            "type": "nested",
                            "properties": {
                                "tag_key": {
                                    "type": "keyword"
                                },
                                "tag_val": {
                                    "type": "keyword"
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

我想过滤host.tags_nested.tag_keys ,但是我找不到正确的语法来访问host内部对象中嵌套的tags_nested文档。 当我知道有一些应匹配的内容时,我尝试了以下查询,该查询不返回任何结果:

{
    "query": {
        "nested": {
            "path": "host.tags_nested",
            "query": {
                "bool": {
                    "filter": [
                        {
                            "term": {
                                "host.tags_nested.tag_key": "example_key"
                            }
                        }
                    ]
                }
            }
        }
    }
}

根据ES文档 ,您可以通过传递与嵌套文档的字段名称相对应的path来执行nested查询,以在嵌套文档中进行查询。 但是,当path在内部对象中并且需要使用点表示法访问时,这似乎不起作用。

有任何想法吗?

尝试这个。 字词查询可搜索我们指定的确切字词。 因此,为此使用fieldname.keyword因为在我们为关键字建立索引时,关键字会存储确切的文本。

{
    "query": {
        "nested": {
            "path": "host.tags_nested",
            "query": {
                "bool": {
                    "filter": [
                        {
                            "term": {
                                "host.tags_nested.tag_key.keyword": "example_key"
                            }
                        }
                    ]
                }
            }
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM