2012-09-05 18 views
5

Mam fasetowane zapytania współpracujące z elasticsearch 0.19.9. Jednak chciałbym zwrócić wszystkie aspekty, które mają liczyć> 0.elasticsearch liczba zwróconych aspektów

Zgodnie z dokumentacją powinien być w stanie:

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

}

Jak rozumiem, to powinno dać mi wszystko aspekty, nawet jeśli liczba to 0.

Jednak nadal zwraca ona 10 najważniejszych aspektów według liczby. Jaki jest domyślny rozmiar. Jedyną rzeczą, która wydaje się mieć wpływ na liczbę zwróconych aspektów, jest ustawienie wartości "size" : N, gdzie N to liczba aspektów, które zostaną zwrócone.

Mogę ustawić naprawdę dużą liczbę, ale to wydaje się być hack-owskie.

Jakieś pomysły dotyczące tego, co robię źle?

Odpowiedz

4

Nie robisz niczego złego. Dobrze to wymyśliłeś! Na githubie znajduje się open issue, aby uzyskać termin podobny do Terms Stats facet, który pozwala ustawić size = 0, aby odzyskać wszystkie warunki. Na razie wystarczy użyć wysokiej wartości, co jest nieco trudne, zgadzam się. Z drugiej strony należy uważać, aby nie zwrócić zbyt wielu wpisów!

+1

Dzięki za informację zwrotną ... Chociaż nie było to, co chciałem usłyszeć. –

+0

Sądzę, że typowe pytanie brzmi: jak odfiltrować terminy, których liczba jest większa niż 0. To jest liczba> 0, po wykonaniu aspektu. Terminy Facet dają się liczyć, ale chcemy również filtrować liczby. –

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

Jedynym sposobem, aby usunąć „ilość: 0” umieścić „all_terms” jako fałszywe, i ustawić numer rozmiar tak wysokie i tak niemożliwe, jak można w danej instancji Elasticsearch (powyższy przykład jest największa podpisana wartość, jaką może mieć liczba całkowita w PHP).

To może nie być najlepszy sposób, ale do tej pory jest to jedyne znane podejście. Filtr Facet nie działa w tej chwili (chyba że zaktualizował i ulepszył Elasticsearch, aby to zrobić).

+1

Nie mam zbyt wielu terminów. To podejście działało mi doskonale. Wyniki wyszukiwania były wystarczająco szybkie. Dzięki! – anbiniyar

Powiązane problemy