2015-04-24 19 views
7

Tôi thực sự mới đến thế giới elasticsearch.Tổng hợp bộ lọc Elasticsearch trên số lượng tài liệu tối thiểu

Hãy nói rằng tôi có một tập hợp lồng nhau trên hai lĩnh vực: field1field2:

{ 
    ... 
    aggs: { 
     field1: { 
      terms: { 
       field: 'field1' 
      }, 
      aggs: { 
       field2: { 
        terms: { 
         field: 'field2' 
        } 
       } 
      } 
     } 
    } 
} 

Đoạn mã này hoạt động hoàn hảo và mang lại cho tôi một cái gì đó như thế này:

aggregations: { 
    field1: { 
     buckets: [{ 
      key: "foo", 
      doc_count: 123456, 
      field2: { 
       buckets: [{ 
        key: "bar", 
        doc_count: 34323 
       },{ 
        key: "baz", 
        doc_count: 10 
       },{ 
        key: "foobar", 
        doc_count: 36785 
       }, 
       ... 
       ] 
     },{ 
      key: "fooOO", 
      doc_count: 423424, 
      field2: { 
       buckets: [{ 
        key: "bar", 
        doc_count: 35 
       },{ 
        key: "baz", 
        doc_count: 2435453 
       }, 
       ... 
       ] 
     }, 
     ... 
     ] 
    } 
} 

Bây giờ, nhu cầu của tôi là loại trừ tất cả kết quả tổng hợp trong đó doc_count nhỏ hơn 1000 ví dụ và nhận được thay thế này:

aggregations: { 
    field1: { 
     buckets: [{ 
      key: "foo", 
      doc_count: 123456, 
      field2: { 
       buckets: [{ 
        key: "bar", 
        doc_count: 34323 
       },{ 
        key: "foobar", 
        doc_count: 36785 
       }, 
       ... 
       ] 
     },{ 
      key: "fooOO", 
      doc_count: 423424, 
      field2: { 
       buckets: [{ 
        key: "baz", 
        doc_count: 2435453 
       }, 
       ... 
       ] 
     }, 
     ... 
     ] 
    } 
} 

Có thể đặt nhu cầu này trong phần truy vấn không? hoặc tôi có phải thực hiện các bộ lọc trong bố trí người gọi (trong javascript trong trường hợp của tôi)?

Cảm ơn trước

Trả lời

16

Lần tới, M'sieur Toph ': RTFM !!!

Tôi cảm thấy thực sự câm: Tôi đã tìm thấy anwser trong sổ tay, 30 giây sau khi hỏi. Tôi không loại bỏ câu hỏi của tôi bởi vì, nó có thể giúp đỡ, ai biết được ...

Đây là anwser:

Bạn có thể chỉ định min_doc_count tài sản trong terms tập hợp.

Nó mang đến cho bạn:

{ 
    ... 
    aggs: { 
     field1: { 
      terms: { 
       field: 'field1', 
       min_doc_count: 1000 
      }, 
      aggs: { 
       field2: { 
        terms: { 
         field: 'field2', 
         min_doc_count: 1000 
        } 
       } 
      } 
     } 
    } 
} 

Bạn cũng có thể chỉ định một số lượng tối thiểu cụ thể đối với mỗi cấp độ của sự kết hợp của bạn.

Còn gì nữa? :)

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