我正在研究Elasticsearch聚合,并且对如何进行管道排序聚合有疑问。我的ES文档中有三个高级字段:
documentId, list1, list2
示例: 这是我的几份文件:
文档1:
{
"documentId":"1",
"list1":
[
{
"key": "key1",
"value": "value11"
}
],
"list2":
[
{
"key": "key2",
"value": "value21"
}
...
]
}
文档2:
{
"documentId":"2",
"list1":
[
{
"key": "key1",
"value": "value11"
}
],
"list2":
[
{
"key": "key2",
"value": "value21"
}
...
]
}
文档3:
{
"documentId":"3",
"list1":
[
{
"key": "key1",
"value": "value12"
}
],
"list2":
[
{
"key": "key2",
"value": "value21"
}
...
]
}
总结-
document1和document2的key1和key2具有相同的一组值(除了id不同,因此它们被视为两个单独的文档)。
document3对于key2具有与document1和document2中相同的值。 key1的值不同于document1和document2。
我想在list1字段的键上运行术语聚合器,这应该作为对list2完成的术语聚合的输入。
因此,对于上面的示例,我想要的总体输出是- 值21:2 (一个计数对应于key1中的value11,第二个计数对应于key1中的value12)
而不是 value21:3(两次计数对应于key1中的value11,第三次计数对应于key1中的value12)。
有什么简单的方法吗?