2013-07-19 17 views
5

czytałem this question i kolega dokonane mnie wątpliwości:Zapytania vs Filtry - kolejność wykonywania

W filtrowane zapytania, gdy stosowany jest filtr? Przed lub po wykonaniu zapytania? Kiedy wynik jest buforowany?

Jeśli filtr zostanie zastosowany wcześniej, czy nie byłoby dobrze zduplikować część zapytania w filtrach? Jeśli filtr zostanie zastosowany później, mam problemy ze zrozumieniem pamięci podręcznej.

Odpowiedz

9

szczęście ES udostępnia dwa rodzaje filtrów, aby pracować z:

{ 
    "query" : { 
    "field" : { "title" : "Catch-22" } 
    }, 
    "filter" : { 
    "term" : { "year" : 1961 } 
    } 
} 


{ 
    "query": { 
    "filtered" : { 
     "query" : { 
     "field" : { "title" : "Catch-22" } 
     }, 
     "filter" : { 
     "term" : { "year" : 1961 } 
     } 
    } 
    } 
} 

w pierwszym przypadku, filtry są stosowane do wszystkich dokumentów znalezionych w zapytaniu. W drugim przypadku dokumenty są filtrowane przed uruchomieniem zapytania. Zapewnia to lepszą wydajność.

Cytat z: http://www.packtpub.com/elasticsearch-server-for-fast-scalable-flexible-search-solution/book

O pamięci podręcznej, nie jestem pewien mechanizm cache filtrów. Moje przypuszczenie to: Pierwszy przypadek, ponieważ filtr jest przeciwko zestawowi wyników zwróconych przez zapytanie, pamięć podręczna jest specyficzna dla tego zestawu powrotnego. Drugi przypadek, filtr zostanie zastosowany jako pierwszy, pamięć podręczna zostanie zapisana dla indeksów, które zostały sprawdzone, w związku z czym ta pamięć podręczna jest bardziej przydatna do ponownego użycia, ponieważ nie polega na zawartości zapytania, ale przy większym koszcie pamięci i czasie zapytań dla pierwszego czas (przed wygenerowaniem pamięci podręcznej).

1

Wytłumaczę szukać zapytanie execution-

Pierwszą rzeczą jest to, że zawsze jest pełna dokument odniesienia, w której chcesz szukać.

Jeśli masz zapytanie filtru zawarte w zapytaniu wyszukiwania, spowoduje ono, że ten dokument będzie mniejszy, lub innymi słowy, zapytania filtrujące będą buforowanymi wynikami z tego samego zapytania. Teraz masz mniejsze drzewo do wyszukiwania z tekstem zapytania.

Teraz twoja wątpliwość - Duplikowanie zapytania w filtrach zwiększy tylko obciążenie mechanizmu pamięci podręcznej. Istnieje wiele linii pomocniczych dotyczących tego, co należy uwzględnić w zapytaniu filtru i co należy zignorować. To wszystko gra trafności.

Powiązane problemy