2012-09-05 36 views
5

Tôi có các truy vấn mặt làm việc với elasticsearch 0.19.9. Tuy nhiên tôi muốn trả lại tất cả các khía cạnh đó có một số> 0.số lượng elasticsearch của các mặt được trả về

Theo tài liệu tôi sẽ có thể:

{ 
    "query" : { 
     "match_all" : { } 
    }, 
    "facets" : { 
     "tag" : { 
      "terms" : { 
       "field" : "tag", 
       "all_terms" : true 
      } 
     } 
    } 

}

Theo tôi được biết, điều này sẽ cho tôi tất cả các khía cạnh ngay cả khi đếm là 0.

Tuy nhiên, điều này vẫn chỉ trả lại 10 khía cạnh hàng đầu theo số lượng. Đó là kích thước mặc định. Điều duy nhất có vẻ ảnh hưởng đến số lượng các mặt được trả về là bằng cách thực sự đặt "size" : N trong đó N là số lượng các khía cạnh sẽ được trả lại.

Tôi có thể đặt số này thành số thực sự cao nhưng điều đó dường như chỉ là hack-ish.

Bất kỳ ý tưởng nào về những gì tôi có thể đang làm sai?

Trả lời

4

Bạn không làm gì sai. Bạn đã tìm ra chính xác! Có một open issue trên github để làm cho các khía cạnh điều khoản tương tự như Terms Stats facet cho phép bạn đặt kích thước = 0 để nhận lại tất cả các điều khoản. Để bây giờ bạn chỉ cần sử dụng một giá trị cao, đó là một chút khôn lanh, tôi đồng ý. Mặt khác, hãy cẩn thận không trả lại quá nhiều mục!

+1

Cảm ơn phản hồi ... Mặc dù đó không phải là những gì tôi muốn nghe. –

+0

Tôi nghĩ rằng câu hỏi phổ biến thực sự là cách lọc ra các cụm từ có số lượng lớn hơn 0, nghĩa là> 0, sau khi thực hiện một khía cạnh cụm từ. Các thuật ngữ khía cạnh cung cấp số lượng nhưng chúng tôi cũng muốn lọc số lượng. –

3
{ 
    "query" : { 
     "match_all" : { } 
    }, 
    "facets" : { 
     "tag" : { 
      "terms" : { 
       "field" : "tag", 
       "size" : 2147483647, 
       "all_terms" : false 
      } 
     } 
    } 
} 

Cách duy nhất để loại bỏ các "đếm: 0" là đặt "all_terms" như sai sự thật, và thiết lập số lượng kích thước của bạn càng cao và như không thể như bạn có thể trong trường hợp Elasticsearch của bạn (ví dụ trên là giá trị đã ký lớn nhất mà một số nguyên trong PHP có thể có).

Nó có thể không phải là cách tốt nhất, nhưng đây là cách tiếp cận duy nhất được biết đến cho đến nay. Bộ lọc khía cạnh không hoạt động với điều này hiện tại (trừ khi chúng được cập nhật và cải tiến Elasticsearch để làm điều đó).

+1

Tôi không có quá nhiều thuật ngữ. Cách tiếp cận này làm việc hoàn toàn tốt cho tôi. Kết quả tìm kiếm đủ nhanh. Cảm ơn! – anbiniyar

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