Adjacency Matrix Aggregation

桶聚合返回邻接矩阵的形式。该请求提供了一组命名过滤器表达式,类似于过滤器聚合请求。响应中的每个桶表示交叉过滤器矩阵中的非空单元。

给定名为A,B和C的过滤器,响应将返回具有以下名称的桶:

A B C
A A A&B A&C
B B B&C
C C

交叉桶,例如A和C,使用由&符号分隔的两个过滤器名称的组合来标记。请注意,响应不包括“C&A”桶,因为这将是与“A&C”相同的文档集。据说矩阵是对称的,所以我们只返回一半。为此,我们对过滤器名称字符串进行排序,并始终使用最低的一对作为“&”分隔符左侧的值。

如果客户端希望使用除&符号的默认值之外的分隔符字符串,则可以在请求中传递备用分隔符参数。

Example:

  1. {
  2. "took": 9,
  3. "timed_out": false,
  4. "_shards": ...,
  5. "hits": ...,
  6. "aggregations": {
  7. "interactions": {
  8. "buckets": [
  9. {
  10. "key":"grpA",
  11. "doc_count": 2
  12. },
  13. {
  14. "key":"grpA&grpB",
  15. "doc_count": 1
  16. },
  17. {
  18. "key":"grpB",
  19. "doc_count": 2
  20. },
  21. {
  22. "key":"grpB&grpC",
  23. "doc_count": 1
  24. },
  25. {
  26. "key":"grpC",
  27. "doc_count": 1
  28. }
  29. ]
  30. }
  31. }
  32. }

用法
这种聚合本身可以提供创建无向加权图所需的所有数据。但是,当与诸如date_histogram之类的子聚合一起使用时,结果可以提供执行动态网络分析所需的额外级别的数据,其中检查随时间的交互变得重要。

限制
对于N个滤波器,产生的桶的矩阵可以是N 2/2,因此默认最大值为100个滤波器。可以使用index.max_adjacency_matrix_filters索引级别设置更改此设置。