具有嵌套通配符路径的术语聚合



给定以下嵌套对象的嵌套对象

{
  [...]
  "nested_parent":{
    "nested_child_1":{
      "classifier":"one"
    },
    "nested_child_2":{
      "classifier":"two"
    },
    "nested_child_3":{
      "classifier":"two"
    },
    "nested_child_4":{
      "classifier":"five"
    },
    "nested_child_5":{
      "classifier":"six"
    }
  [...]
}

我想在通配符字段nested_parent.*.classifier上聚合,

按照
{
  "size": 0,
  "aggs": {
    "termsAgg": {
      "nested": {
        "path": "nested_parent.*"
      },
      "aggs": {
        "termsAgg": {
          "terms": {
            "size": 1000,
            "field": "nested_parent.*.classifier"
          }
        }
      }
    }
  }
}

这似乎不起作用 - 可能是因为pathfield的定义不够清晰。

如何使用动态创建的嵌套映射在嵌套对象上进行聚合,这些映射共享其大部分属性,包括我打算对其进行术语聚合的classifier

Tdlr;

派对有点晚了。我会建议一种不同的方法,因为我看不到使用通配符的可能解决方案。

我的解决方案涉及使用 copy_to 创建一个字段,您将能够使用聚合访问该字段。

溶液

这个想法是创建一个字段来存储所有分类器的值。您可以对其进行聚合。

PUT /54198251/
{
  "mappings": {
    "properties": {
      "classifiers": {
        "type": "keyword"
      },
      "parent": {
        "type": "nested",
        "properties": {
          "child": {
            "type": "nested",
            "properties": {
              "classifier": {
                "type": "keyword",
                "copy_to": "classifiers"
              }
            }
          },
          "child2": {
            "type": "nested",
            "properties": {
              "classifier": {
                "type": "keyword",
                "copy_to": "classifiers"
              }
            }
          }
        }
      }
    }
  }
}
POST /54198251/_doc
{
  "parent": {
    "child": {
      "classifier": "c1"
    },
    "child2": {
      "classifier": "c2"
    }
  }
}
GET /54198251/_search
{
  "aggs": {
    "classifiers": {
      "terms": {
        "field": "classifiers",
        "size": 10
      }
    }
  }
}

会给你:

  "aggregations": {
    "classifiers": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "c1",
          "doc_count": 1
        },
        {
          "key": "c2",
          "doc_count": 1
        }
      ]
    }
  }

最新更新