2016-08-08 100 views
0

Elasticsearch索引中有3種類型:type1,type2,type3。 我需要按類型過濾(默認過濾值= type1)。但我也需要獲得類型聚合。 但這是不可能的,因爲在每個查詢中我使用過濾器,並且只有過濾類型的對象。 請幫我弄清楚如何去做。有沒有過濾器使用第二個查詢的唯一方法?ElasticSearch(Nest)中的類型聚合

+0

你是什麼意思的「類型」聚合?你的意思是彙總?這是不完全清楚你在問什麼。你能否更詳細地解釋一下,可能是在代碼或僞代碼中的例子? –

+0

這是在同一字段上使用過濾器和聚合的問題 – Aydar

+0

爲什麼要在檢索聚合時使用過濾器?你能擴展你的例子並解釋你想達到的目標嗎? – oldbam

回答

0

好像到搜索在 搜索請求的最後命中,聚集已經計算後應用post_filter用例爲post-filter

{ 
     "query": { 
     "match_all": {} 
     }, 
     "aggs": { 
     "typeAggr": { 
      "terms": { "field": "type" } 
     } 
     }, 
     "post_filter": { 
     "term": { "type": "type1" } 
     } 
    } 

該查詢將列出匹配濾波器(TYPE1),而聚合將在type字段而不管濾波器的得到結果的文檔。