【问题标题】:Elasticsearch aggregation by full array全数组的 Elasticsearch 聚合
【发布时间】:2021-03-26 17:36:07
【问题描述】:

如何通过文档中的所有数组项而不是数组的每个值来获取聚合。例如我有几个文件,像这样

{'some_field': [1,2]}
{'some_field': [1]}
{'some_field': [1]}
{'some_field': [7,2]}

现在使用像这样的简单聚合查询

{
"aggs" : {
    "agg_name" : {
        "terms" : {
            "field" : "some_field"
        }
    }
},
"size": 0
}

我得到了这样的结果

"buckets": [
        {
          "key": "1",
          "doc_count": 3
        },
        {
          "key": "2",
          "doc_count": 2
        },
        ...
]

但我想获得完整的数组视图,像这样

"buckets": [
        {
          "key": [1],
          "doc_count": 2
        },
        {
          "key": [1,2],
          "doc_count": 1
        },
        {
          "key": [7,2],
          "doc_count": 1
        },
]

【问题讨论】:

    标签: elasticsearch elasticsearch-aggregation


    【解决方案1】:

    我一直在寻找相同的聚合,但仍然不存在。 所以用一个无痛的脚本来修复

    POST some_index/_search
    {
      "size": 0,
      "aggs": {
        "myaggs": {
          "terms": {
            "size": 100,
            "script": {
              "lang": "painless",
              "source": """
                def myString = "";
                for (int i = 0; i < doc['data. some_field.keyword'].length; ++i) {
                  myString += doc['data. some_field.keyword'][i] + ", ";
                }
                return myString;
              """
            }
          }
        }
      } 
    }
    

    【讨论】:

      猜你喜欢
      • 2017-01-28
      • 2018-01-12
      • 2020-07-21
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-24
      相关资源
      最近更新 更多