我有一个关于嵌套对象聚合的问题。
文件就像:

{
    "features": [{
            "key": "key1",
            "values": ["A", "B"]
        },
        {
            "key": "key2",
            "values": ["C", "D"]
        },
        {
            "key": "key2",
            "values": ["E"]
        }
    ]
}
其中“功能”是一个嵌套对象。
我可以聚合并从键和值中获得不同的值,但是我需要在需要的地方进行合并的存储桶聚合:
键1-> A,B
键2-> C,D,E
是否必须使用复合聚合?还是使用哪种适当的聚合?
也欢迎Java示例!
谢谢!!!

最佳答案

您实际上并不需要composite。以下应该没问题:

{
  "size": 0,
  "aggs": {
    "nested_aggs": {
      "nested": {
        "path": "features"
      },
      "aggs": {
        "by_key": {
          "terms": {
            "field": "features.key.keyword"
          },
          "aggs": {
            "by_values": {
              "terms": {
                "field": "features.values.keyword"
              }
            }
          }
        }
      }
    }
  }
}
假设您的映射如下所示
{
  "mappings":{
    "properties":{
      "features":{
        "type":"nested",
        "properties":{
          "key":{
            "type":"text",
            "fields":{
              "keyword":{
                "type":"keyword",
                "ignore_above":256
              }
            }
          },
          "values":{
            "type":"text",
            "fields":{
              "keyword":{
                "type":"keyword",
                "ignore_above":256
              }
            }
          }
        }
      }
    }
  }
}

10-07 13:05
查看更多