2016-08-01 51 views
-2

是否有指定鍵列表術語聚合。Elasticsearch術語彙總指定鍵列表

例如,這是我的查詢。我使用值過濾成員字段72,16,92

{ 
    "from": 0, 
    "size": 0, 
    "query": { 
    "filtered": { 
     "filter": { 
     "and": [{ 
      "or": [{ 
      "term": { 
       "member": 72 
      } 
      }, { 
      "term": { 
       "member": 16 
      } 
      }, { 
      "term": { 
       "member": 92 
      } 
      }] 
     }] 
     }, 
     "query": { 
     "match_all": {} 
     } 
    } 
    }, 
    "aggs": { 
    "member": { 
     "terms": { 
     "field": "member", 
     "order": { 
      "_term": "asc" 
     }, 
     "size": 100 
     } 
    } 
    } 
} 

聚合結果僅返回16和72,因爲member = 92與任何文檔都不匹配。

{ 
    "took": 6, 
    "timed_out": false, 
    "_shards": { 
    "total": 5, 
    "successful": 5, 
    "failed": 0 
    }, 
    "hits": { 
    "total": 2360, 
    "max_score": 0, 
    "hits": [] 
    }, 
    "aggregations": { 
    "member": { 
     "doc_count_error_upper_bound": 0, 
     "sum_other_doc_count": 0, 
     "buckets": [{ 
     "key": 16, 
     "doc_count": 2357 
     }, { 
     "key": 72, 
     "doc_count": 3 
     }] 
    } 
    } 
} 

我想在聚合的結果鍵作爲doc_count 0,這是不存在的結果集

回答

0

嘗試添加min_doc_count

"aggs": { 
"member": { 
    "terms": { 
    "field": "member", 
    "min_doc_count": 0, 
    "order": { 
     "_term": "asc" 
    }, 
    "size": 100 
    } 
} 
+0

min_doc_co unt不適合我。我不想獲得所有條款。我想指定我需要的術語。 – talhasch

0

Elasticsearch不知道一個不存在的term除非你專門搜索它:

"aggs": { 
    "member72": { 
     "filter": { 
     "term": { 
      "member": 72 
     } 
     } 
    }, 
    "member16": { 
     "filter": { 
     "term": { 
      "member": 16 
     } 
     } 
    }, 
    "member92": { 
     "filter": { 
     "term": { 
      "member": 92 
     } 
     } 
    } 
    }