为什么Elasticsearch无法支持min_doc_count和按_count asc排序?

要求:

group by hldId having count(*) = 2

Elasticsearch查询:

"aggs": {
    "groupByHldId": {
        "terms": {
            "field": "hldId","min_doc_count": 2,"order" : { "_count" : "asc" }
        }            
    }
}

但没有记录返回

  "aggregations" : {
    "groupByHldId" : {
      "doc_count_error_upper_bound" : -1,"sum_other_doc_count" : 2660,"buckets" : [ ]
    }
  }

但是如果更改为desc,它就会返回

   "buckets" : [
        {
          "key" : 200035075,"doc_count" : 355
        },

或者,如果没有min_doc_count,它也将返回

"buckets" : [    
    {
      "key" : 200000061,"doc_count" : 1
    },

那么为什么同时具有mid_doc_countasc的方向却返回空?

chenzhao5001 回答:为什么Elasticsearch无法支持min_doc_count和按_count asc排序?

您可以使用自定义的bucket selector script这样尝试。

 {
  "aggs": {
    "countfield": {
      "terms": {
        "field": "hldId","size": 100,"order": {
          "_count": "desc"
        }
      },"aggs": {
        "criticals": {
          "bucket_selector": {
            "buckets_path": {
              "doc_count": "_count"
            },"script": "params.doc_count==2"
          }
        }
      }
    }
  }
}
本文链接:https://www.f2er.com/3166253.html

大家都在问