我想查询我在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关于嵌套字段和嵌套聚合的官方文档。