ElasticSearch:Metric Aggregations支持min_doc_count

时间:2017-10-13 18:51:25

标签: elasticsearch elasticsearch-aggregation

我是Elastic Search的新手,正在尝试使用Metric聚合为我的文档进行查询。但是,当我为总和度量标准聚合添加字段:min_doc_count = 1时,出现错误: `

{
   "error": {
      "root_cause": [
         {
            "type": "illegal_argument_exception",
            "reason": "[sum] unknown field [min_doc_count], parser not found"
         }
      ],
      "type": "illegal_argument_exception",
      "reason": "[sum] unknown field [min_doc_count], parser not found"
   },
   "status": 400
}

`

我在这里缺少什么?

`

{
    "aggregations" : {
        "myKey" : {
            "sum" : {
                "field" : "field1",
                "min_doc_count": 1
            }
        }
    }
}

`

2 个答案:

答案 0 :(得分:1)

我不确定您拥有sum关键字的原因/位置?

min_doc_count的想法是确保给定aggs查询返回的存储桶包含至少N个文档,下面的示例仅返回出现在10个或更多文档中的主题的主题存储桶。

GET _search
    {
        "aggs" : {
            "docs_per_subject" : {
                "terms" : {
                    "field" : "subject",
                    "min_doc_count": 10
                }
            }
        }
    }

因此,考虑到这一点,您的会重构以下内容......虽然将min_doc_count设置为1时,根本不需要保留参数。

GET _search
    {
        "aggs" : {
            "docs_per_subject" : {
                "terms" : {
                    "field" : "field1",
                    "min_doc_count": 1
                }
            }
        }
    }

答案 1 :(得分:0)

如果您希望仅对字段的非零值求和,则可以在查询部分中过滤掉这些零值:

{
  "size": 0,
  "query": {
    "bool": {
      "must": [
        {
          "range": {
            "field": {
              "gt": 0
            }
          }
        }
      ]
    }
  },
  "aggregations": {
    "myKey": {
      "sum": {
        "field": "field1"
      }
    }
  }
}

请参阅Bool QueryRange Term