如何使用Elasticsearch查询嵌套字段的所有值



我想查询我在Elasticsearch中的所有数据包中的值。

例如,我有代码:

"website" : "google",
"color" : [
{
"color1" : "red",
"color2" :  "blue"
}
]
} 

我有一个未定义数量的网站的代码。我想提取所有的"color1"我所有的网站我该怎么办?我尝试了match_all和size": 0,但是没有成功。

谢谢你!

为了能够查询嵌套对象,您需要首先将它们映射为嵌套字段,然后您可以像这样查询嵌套字段:

GET //my-index-000001/_search
{
"aggs": {
"test": {
"nested": {
"path": "color"
},
"aggs": {
"test2": {
"terms": {
"field": "color.color1"
}
}
}
}
}
}

查询的结果应该是这样的:

"aggregations": {
"test": {
"doc_count": 5,
"test2": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "red",
"doc_count": 4
},
{
"key": "gray",
"doc_count": 1
}
]
}
}
}

如果您检查聚合结果返回,您将获得color1的列表及其在文档中出现的时间。

更多信息可以查看Elasticsearch关于嵌套字段和嵌套聚合的官方文档。

相关内容

  • 没有找到相关文章

最新更新