2015-06-18 21 views
7

Tôi đang sử dụng elasticsearch để tìm kiếm cơ sở dữ liệu có nhiều bản sao. Tôi đang sử dụng dấu hai chấm trường và nó hoạt động, tuy nhiên nó trả về số lần truy cập (bao gồm cả trùng lặp) và không phải số lượng nhóm.nhận số nhóm trong tập hợp elasticsearch

"aggs": { 
     "uniques": { 
      "terms": { 
       "field": "guid" 
      }, 
      "aggs": { 
       "jobs": { "top_hits": { "_source": "title", "size": 1 }} 
      } 
     } 
    } 

tôi có thể đếm xô bằng cách làm cho một yêu cầu khác sử dụng cardinality (nhưng nó chỉ trả về số lượng, không phải là tài liệu):

{ 
    "aggs" : { 
     "uniques" : { 
      "cardinality" : { 
       "field" : "guid" 
      } 
     } 
    } 
} 

Có cách nào để trả lại cả hai yêu cầu (xô + tổng xô đếm) trong một tìm kiếm?

Cảm ơn

Trả lời

11

Bạn có thể kết hợp cả hai tập hợp này thành 1 yêu cầu.

{ 
    "aggs" : { 
    "uniques" : { 
     "cardinality" : { 
      "field" : "guid" 
     } 
    }, 
    "uniquesTerms": { 
     "terms": { 
      "field": "guid" 
     }, 
     "aggs": { 
      "jobs": { "top_hits": { "_source": "title", "size": 1 }} 
     } 
    } 
} 
+0

tuyệt vời, cảm ơn bạn rất nhiều – peixotorms

Các vấn đề liên quan