2013-12-17 4 views
2

ES에서 쿼리 전에 적용되는 필터는 무엇입니까?Elastic Search에서 필터는 어떻게 적용됩니까?

예를 들어, 아주 느린 퍼지 검색을 수행하고 있지만 작은 기간에만 수행하고 있습니다. 예를 들어 아래에서 볼 수 있습니다 (PHP) :

$res=$client->search(array('index' => 'main', 'body' => array(
    'query' => array(
    'bool' => array(
     'should' => array(
      array('wildcard' => array('title' => '*123*')), 
     ) 
    ) 
    ), 
    'filter' => array(
     'and' => array(
      array('range' => array('created' => array('gte' => date('c',time()-3600), 'lte' => date('c',time()+3600)))) 
     ) 
    ), 
    'sort' => array() 
))); 

저속 검색을 시도하기 전에 필터가 적용됩니까?

로직은 필터가 실행 된 다음 쿼리가 표시되도록 지정하지만 확신하고 싶습니다.

답변

2

filtered -query를 사용하면 문서가 채점되기 전에 필터가 적용됩니다.

이렇게하면 일반적으로 작업 속도가 상당히 빨라집니다. 그러나 퍼지 쿼리는 필터에 관계없이 입력을 사용하여 더 큰 쿼리를 작성합니다.

그런 다음 쿼리가 먼저 필터를 존중하지 않고 실행됩니다 search 객체에 filter 권리를 사용

은 다음 문서는 안타에서 필터링됩니다 - 측면이 필터링되지 않은 남아 반면.

따라서 패싯을 사용하지 않는 경우 거의 항상 filtered -query를 사용해야합니다.

+0

감사합니다. 좋은 점 : – Sammaye

관련 문제