【问题标题】:Elasticsearch composite aggregate query on nested fields嵌套字段上的 Elasticsearch 复合聚合查询
【发布时间】:2020-12-21 19:14:49
【问题描述】:

我有一个关于嵌套对象聚合的问题。 文件是这样的:

{
    "features": [{
            "key": "key1",
            "values": ["A", "B"]
        },
        {
            "key": "key2",
            "values": ["C", "D"]
        },
        {
            "key": "key2",
            "values": ["E"]
        }
    ]
}

其中“特征”是一个嵌套对象。 我可以聚合并从键和值中获取不同的值,但我需要在需要的地方获得组合桶聚合:

key1 -> A,B key2 -> C,D,E

是否必须使用复合聚合?或者哪个是正确的聚合? 也欢迎 Java 示例!

谢谢!!!

【问题讨论】:

    标签: elasticsearch aggregation


    【解决方案1】:

    您实际上并不需要 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
                  }
                }
              }
            }
          }
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2023-04-03
      • 2015-07-30
      • 2017-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-05
      • 1970-01-01
      • 2018-06-01
      相关资源
      最近更新 更多