2016-10-13 58 views
0

我有一個統計每個用戶的圖像數量的查詢:elasticsearch過濾AGGS由DOC數

GET images/_search 
{ 
"query": { 
    "bool": { 
     "must": [ 
     { 
     "term": { 
      "appID.raw": "myApp" 
     } 
    } 
    ] 
} 
}, 
"size": 0, 
"aggs": { 
    "perDeviceAggregation": { 
    "terms": { 
     "field": "deviceID"  
    } 
    } 
} 
} 

它基本上能正常工作,但我想排除有少於200個用戶全部聚集結果圖片。我如何調整上面的查詢來實現這一目標?

謝謝。

+0

你可以發佈你的映射和幾個示例文檔嗎?在哪個場地圖像被存儲? – ChintanShah25

回答

1

您可以通過使用Minimum Document Count選項來實現此目的。

"aggs": { 
     "perDeviceAggregation": { 
     "terms": { 
      "field": "deviceID", 
      "min_doc_count": 200 
     } 
     } 
    } 
0

使用查詢子句爲您的詞彙聚合添加過濾器聚合。 Filter Aggregations

你可以修改你的上面的查詢,看起來像這樣。

{ 
    "query": { 
     "bool": { 
      "must": [ 
       { 
        "term": { 
         "appID.raw": "myApp" 
        } 
       } 
      ] 
     } 
    }, 
    "size": 0, 
    "aggs": { 
     "filtered_users_with_images_count": { 
      "filter": { 
       "term": { 
        "count": 200 
       } 
      }, 
      "aggs": { 
       "perDeviceAggregation": { 
        "terms": { 
         "field": "deviceID" 
        } 
       } 
      } 
     } 
    } 
} 

您可以修改過濾器內部filtered_users_with_images_count以配合圖像比200

也請考慮來發表您的數據映射與查詢一起,以支持您的問題更大的文件。