Elasticsearch中的管道聚合

时间:2019-02-25 06:34:22

标签: elasticsearch elasticsearch-aggregation aws-elasticsearch

我正在研究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)。

有什么简单的方法吗?

0 个答案:

没有答案