2013-06-07 7 views
5

에 대시 전체 문자열을 일치 필드 데이터 자체는 포함 - (대시), 문자열 데이터가 GUIDS 내가 제대로 일치하도록 노력하고 elasticsearch 쿼리를 elasticsearch

그것이 때문에 제대로 일치되지

난 그냥 하나의 GUID를 일치하도록 노력하고
"query": { 
    "filtered": { 
      "query": { 
       "match_phrase":{ 

        "guid":{"operator" : "or","query":"bd2acb42-cf01-11e2-ba92-12313916f4be"} 
       } 
      } 
    } 
} 

, 이것은 잘 작동합니다 : -에 의해 분할 별도의 단어들로 용어를 분할

난 이후이 같은 match_phrase 쿼리를 사용하는 쿼리를 변경 한 .

내가 여러 GUIDS

일치하도록 노력하고 그래서이 별도로 각 GUID를 전체 문자열과 일치하려고하지 때문에 작동하지 않는 가정

"query": { 
    "filtered": { 
      "query": { 
       "match_phrase":{ 

        "guid":{"operator" : "or","query":"bd2acb42-cf01-11e2-ba92-12313916f4be d1091f08-ceff-11e2-ba92-12313916f4be"} 
       } 
      } 
    } 
} 

것처럼 현재 보이는 그러나.

"analyzer": "whitespace"를 쿼리에 추가하려고 시도했지만 쿼리가 완전히 중단되었습니다.

그렇다면 쿼리가 전체 GUID 문자열을 찾고 여러 GUID를 일치시킬 수있는 가장 좋은 방법은 무엇입니까?

답변

4

비슷한 목적으로 not_analyzed 필드 매핑을 설정했습니다.

"guid" : { 
     "type" : "string", 
     "index" : "not_analyzed" 
    } 

수동으로 쿼리를 작성하십시오.

{ 
    "bool" : { 
     "should" : [ 
      { 
       "term" : { "guid" : "bd2acb42-cf01-11e2-ba92-12313916f4be" } 
      }, 
      { 
       "term" : { "guid" : "d1091f08-ceff-11e2-ba92-12313916f4be" } 
      } 
     ], 
     "minimum_number_should_match" : 1 
    } 
}