2016-07-02 4 views
0

검색 엔진 및 필터링 엔진을 Elasticsearch로 바꿀 계획입니다. 많은 문서를 살펴봄으로써 나는 elasticsearch가 패싯을 만드는 능력을 가지고 있음을 발견했다. 내 왼쪽 필터 탐색 사이드 바에 몇 가지면을 만들고 elasticsearch의 카테고리 필드를 사용하여 필터링하여 내 제품과 패싯을 쿼리합니다.Elasticsearch (패싯 검색)에서 정확히 일치

하지만 내가 선택한 패싯에 대한 elasticsearch를 다시 쿼리하는 방법을 모르겠습니다.

나는 elasticsearch PHP는 클라이언트의 body 태그에
'filter' => [ 
    'bool' => [ 
     'must' => [ 
      ['match_phrase' => [ 'Material' => 'Aluminum' ]], 
      ['match_phrase' => [ 'Length' => '1/2']] 
     ] 
    ] 
] 

이 코드

을 사용했다. 실제로 작동하지만 길이가 1/2-3 또는 1/2-4 인 다른 제품이 있습니다. 내가 1/2에 대해 질문 할 때, 탄성은 또한 1/2-3과 1/2-4를 얻습니다. 왜냐하면 '1/2-3'과 '1/2-4'도 '1/2'을 포함하기 때문입니다.

1/2-3 또는 1/2-4가 아닌 제품을 정확하게 검색하고 가져 오는 방법을 알고 싶습니다. 정확히 어떤 쿼리를 사용해야합니까?

감사합니다!

참고 : 패싯은 사용되지 않습니다. 내가 익숙해 져서 그 말을 사용하고 있습니다. 현재 Elasticsearch 2.3에 집계되었습니다.과 그 버전을 사용하고 있습니다. *

답변

0

내 솔루션을 찾았습니다!

match_phrase 대신 용어 메서드를 사용했습니다. 그것은 내가 필요한 것을 정확하게 얻습니다. match_phrase 대신 match가 포함되지 않은 exact match를 검색합니다. Match_phrase가 정확한 구문을 나란히 검색하고 있습니다.

그러나 용어에 대해 정확한 결과를 얻으려면 not_analyzed 필드를 만들어야합니다.

관련 문제