【发布时间】:2019-10-10 01:59:52
【问题描述】:
文档结构
Doc_1 {
"title":"hello",
"myObject":{
"key1":"value1",
"key2":"value2"
}
}
Doc_2 {
"title":"hello world",
"myObject":{
"key2":"value4",
"key3":"value3"
}
}
Doc_3 {
"title":"hello world2",
"myObject":{
"key1":"value1",
"key3":"value3"
}
}
信息:myObject包含动态键值对。
目标:我的目标是编写聚合查询返回唯一的所有动态键值对的数量。
尝试及说明:我可以通过这种方式轻松获得已知键的结果。
{
"size":0,
"query":{
"match":{"title":"hello"}
},
"aggs":{
"key1Agg":{
"terms":{"field":"myObject.key1.keyword"}
},
"key2Agg":{
"terms":{"field":"myObject.key2.keyword"}
},
"key3Agg":{
"terms":{"field":"myObject.key3.keyword"}
}
}
}
这是上述硬编码嵌套键聚合的典型结果。
{
...
"aggregations": {
"key1Agg": {
...
"buckets": [
{
"key": "value1",
"doc_count": 2
}
]
},
"key2Agg": {
...
"buckets": [
{
"key": "value2",
"doc_count": 1
},
{
"key": "value4",
"doc_count": 1
}
]
},
"key3Agg": {
...
"buckets": [
{
"key": "value3",
"doc_count": 2
}
]
}
}
}
现在我只想返回所有动态键值对的计数,即不在聚合查询中放置任何核心键名。
我正在使用 ES 6.3,提前致谢!!
【问题讨论】:
标签: elasticsearch aggregation elasticsearch-6