对象或键值对上的 elasticsearch 聚合
elasticsearch aggregation on object or key value pair
我有这样的文件
文件-1
{
"edges" :[
{
"start" : "abc",
"end" : "def"
},
{
"start" : "bbb",
"end" : "ccc"
},
{
"start" : "xyz",
"end" : "aaa"
}
]
}
文件-2[=17=]
{
"edges" :[
{
"start" : "abc",
"end" : "def"
},
{
"start" : "bbb",
"end" : "ccc"
}
]
}
我想要获得 start
和 end
的独特组合。
即如下
{
"buckets": [
{
"key": {
"start": "abc",
"end": "def"
},
"doc_count": 2
},
{
"key": {
"start": "bbb",
"end": "ccc"
},
"doc_count": 2
},
{
"key": {
"start": "xyz",
"end": "aaa"
},
"doc_count": 1
}
]
}
我在 start
和 end
字段上尝试了术语聚合。但没有得到预期的输出。
您需要使用 nested
数据类型,因为数组是扁平化的,因为它在 edges
上的 docs. This is the reason why you can't get the expected results as the relation between key
and value
is lost. Furthermore, you'll then need to add a nested 聚合中有很好的描述,然后您可以在其中应用terms
聚合。
聚合的层次结构应如下所示:
nested: edge
terms: key
terms: value
在此基础上,您可以通过组合术语聚合的结果来产生预期的结果。
我有这样的文件
文件-1
{
"edges" :[
{
"start" : "abc",
"end" : "def"
},
{
"start" : "bbb",
"end" : "ccc"
},
{
"start" : "xyz",
"end" : "aaa"
}
]
}
文件-2[=17=]
{
"edges" :[
{
"start" : "abc",
"end" : "def"
},
{
"start" : "bbb",
"end" : "ccc"
}
]
}
我想要获得 start
和 end
的独特组合。
即如下
{
"buckets": [
{
"key": {
"start": "abc",
"end": "def"
},
"doc_count": 2
},
{
"key": {
"start": "bbb",
"end": "ccc"
},
"doc_count": 2
},
{
"key": {
"start": "xyz",
"end": "aaa"
},
"doc_count": 1
}
]
}
我在 start
和 end
字段上尝试了术语聚合。但没有得到预期的输出。
您需要使用 nested
数据类型,因为数组是扁平化的,因为它在 edges
上的 docs. This is the reason why you can't get the expected results as the relation between key
and value
is lost. Furthermore, you'll then need to add a nested 聚合中有很好的描述,然后您可以在其中应用terms
聚合。
聚合的层次结构应如下所示:
nested: edge
terms: key
terms: value
在此基础上,您可以通过组合术语聚合的结果来产生预期的结果。