2014-07-25 24 views
5

Tôi khá mới đối với elasticsearch và tôi chưa tìm được câu hỏi cụ thể về điều này. Nếu nó đã được trả lời, tôi xin lỗi trước và tôi hy vọng bạn có thể chỉ cho tôi một hướng đúng.Tập hợp trong Tìm kiếm Đàn hồi (Tổ)

tôi đang tìm kiếm một cách để thực hiện những điều sau đây trong NEST:

"aggs" : { 
    "fieldA" : { 
     "terms" : { 
      "field" : "fieldA" 

     } 
    }, 

    "fieldB" : { 
     "terms" : { 
      "field" : "fieldB" 

     } 
    } 
} 

Tôi đã thử này:

.Aggregations(q => q.Terms("fieldA", r => r.Field(s => s.fieldA)) && q.Terms("fieldB", r => r.Field(s => s.fieldB))) 

và điều này:

.Aggregations(q => q.Terms("fieldA", r => r.Field(s => s.fieldA))) 
.Aggregations(q => q.Terms("fieldB", r => r.Field(s => s.fieldB))) 

nào cả thất bại trong việc công việc. Tôi có thiếu cái gì khác không?

Trả lời

14

Bạn có thể chỉ định nhiều quy tụ như vậy:

.Aggregations(a => a 
    .Terms("fieldA", t => t.Field(s => s.FieldA)) 
    .Terms("fieldB", t => t.Field(s => s.FieldB)) 
) 

Mỗi bộ mô tả tập hợp, trong nội bộ, thêm nó vào một cuốn từ điển (sử dụng tên agg như một chìa khóa) và sau đó trả về bản thân, do đó bạn có thể tiếp tục bổ sung thêm.

Xin lỗi vì thiếu tài liệu về tình trạng tăng nặng ở NEST. Chúng tôi đang trong quá trình sửa đổi các tài liệu và chúng tôi chắc chắn sẽ bao gồm một ví dụ về trường hợp sử dụng ở trên.

+1

Nó hoạt động đẹp, cảm ơn bạn! Sẽ mong đợi thêm tài liệu trong tương lai. –

+0

Cảm ơn bạn đã trả lời @greg, tôi có thể đoán nó sẽ hoạt động giống như bộ lọc aa bool: .Tìm kiếm (a => a.Terms ("fieldA", t => t.Field (s => s. FieldA)), b => b.Terms ("fieldB", t => t.Field (s => s.FieldB)) ) – jhilden

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