[英]How to do match multiple nested object in one document with inner hits in 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.