在弹性搜索中对聚合结果应用过滤器

时间:2016-01-05 06:40:47

标签: elasticsearch

我遇到了一个问题,我需要对弹性搜索中的聚合结果应用一些过滤器。

例如,假设以下是字段 event_name,location,time,user_id

现在我的要求是让最近一个月内执行了特定操作的用户ID(假设" logged_in")至少5次。我能够获得过去一个月内有过login_in的用户。但是如何进一步过滤结果呢?

我写的查询是:

{
   "query": {
      "filtered": {
         "filter": {
            "bool": {
                "must": [
                  {
                    "range":{
                       "time":{
                          "from": 1412312824,
                          "to": 1422142824
                        }
                     }
                  },
                  {
                     "term": {
                        "action": "logged_in"
                      }          
                  }
               ]
            }
         }
      }
   },
   "aggs": {
      "result": {
         "terms": {
            "field": "user_id"
         }
      }
   }
}

示例输出:

user_id, doc_count
1          10
2          25
3           1
4           2

我需要对上面的结果应用过滤器。我该怎么做?

1 个答案:

答案 0 :(得分:1)

我相信您只需在条款汇总中添加min_doc_count密钥,就像这样:

...
"aggs": {
    "result": {
        "terms": {
            "field": "user_id",
            "min_doc_count": 5
        } 
    }
}
...

来源:https://www.elastic.co/guide/en/elasticsearch/reference/1.6/search-aggregations-bucket-terms-aggregation.html#_minimum_document_count