弹性搜索由数组字段聚合

时间:2017-06-18 14:15:17

标签: arrays elasticsearch aggregate aggregation

我想使用桶聚合按数组聚合。 示例文件:

1. {"arrayField" : ["1", "2", "3]}

2. {"arrayField" : ["1", "2", "3]}

3. {"arrayField" : ["4", "2", "3]}

4. {"arrayField" : ["1", "2", "3, "4"]}

在这个例子中,应该有三个桶:

  1. 包含文档1和2,因为它们都有" arrayField" = [" 1"," 2"," 3"]。
  2. 包含文件2。
  3. 包含文件3.
  4. 常规术语聚合将事件分为4个桶(" 1"," 2"," 3"," 4") ,但这不是我正在寻找的聚合。

    我能够实现这种聚合:

        "terms": {
            "script" : {
                "inline": "def total = ''; for (def item : doc['DESTINATIONS_ARR']) { total += (item + ',');} return total;"
    
                  } 
         }
    

    但我正在寻找更好/更有效的方式。 这也适用于数字/日期数组。

    谢谢。

0 个答案:

没有答案