如何按照弹性搜索中的术语计数

时间:2017-06-01 04:18:50

标签: elasticsearch

我有以下文档映射

{
  properties: {
    id: {
      type: 'keyword'
    },
    rel: {
      type: 'nested',
      properties: {
        type: {
          type: 'keyword'
        },
        ...
      }
    }
  }
}

最后我想绘制一个x-y图表,其中x轴是t1类型的计数,y轴是t2类型的计数,因此对于以下文档

{ id: 1, rel: [ { type: t1, ... }, { type: t1, ... }, { type: t2, ... }] }
{ id: 2, rel: [ { type: t1, ... }, { type: t1, ... }] }
{ id: 3, rel: [ { type: t1, ... }, { type: t1, ... }] }

将映射到3(x,y)点(2,1),(2,0),(2,0),并且我将在x-y平面上绘制它们,就像这样

^
|
|   1 
+---2-->

现在我使用以下聚合

{
  "_source": false,
  "aggregations": {
    "g1": {
      "terms": {
        "field": "id",
        "size": 10000
      },
      "aggregations": {
        "rel": {
          "nested": {
            "path": "rel"
          },
          "aggregations": {
            "filter-t1": {
              "filter": {
                "terms": {
                  "rel.type": [
                    "t1"
                  ]
                }
              }
            },
            "filter-t2": {
              "filter": {
                "terms": {
                  "rel.type": [
                    "t2"
                  ]
                }
              }
            }
          }
        }
      }
    }
  }
}

获得以下结果

{
  "aggregations": {
    "g1": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "1",
          "doc_count": 1,
          "rel": {
            "doc_count": 4942,
            "filter-t1": {
              "doc_count": 6
            },
            "filter-t2": {
              "doc_count": 20
            }
          }
        },
        {
          "key": "2",
          "doc_count": 1,
          "rel": {
            "doc_count": 3039,
            "filter-t1": {
              "doc_count": 6
            },
            "filter-t2": {
              "doc_count": 11
            }
          }
        }
        ...

并计算API层中每个坐标的文档数。

问题是总文档数量达到数百万个文档级别,查询请求中的所有文档都无法正常工作。我也没有找到在聚合中进行分页的方法,from size似乎只适用于_source。

有没有办法在弹性搜索中实现我想要的东西?

0 个答案:

没有答案