ElasticSearch术语聚合仅在我使用脚本指定字段时才有效

时间:2017-07-12 16:53:13

标签: elasticsearch

以下聚合会像我期望的那样返回存储桶:

{
  "size": 0,
      "aggs": {
        "my_agg": {
           "terms": {
           "script": {
              "inline": "arrayField.innerArrayField.property"
            }
         }
      }
   }

这个聚合似乎应该返回同一组桶,但不返回:

{
  "size": 0,
      "aggs": {
        "my_agg": {
          "terms": {        
              "field": "arrayField.innerArrayField.property"        
          }
        }
      }

}

类型映射的相关部分:

"arrayField": {
        "type": "nested",
        "properties": {
          "innerArrayField": {
            "type": "nested",
            "properties": {
              "property": {
                "type": "string"
              }

}}

发生了什么事?

1 个答案:

答案 0 :(得分:1)

您的地图类型为nested,因此您还应首先使用nested aggregation。脚本不是访问存储在ES中的嵌套文档,而是从JSON源动态提取数据,这很慢,因为每次点击都必须这样做。