2017-09-17 15 views
1

complexId이라는 필드가 있으며 특수 문자 (fruit/1a.445/2.10.mango)가있는 값이 있다고 가정 해 보겠습니다. 그래서 Complex ID fruit/1a.445/2.10.mango과 같은 것을 검색 할 때 결과를 얻을 수 있어야합니다.Elasticsearch에서 검색 쿼리의 단어 한 단어를 일치시키는 방법

내가 원하는 내가 탄성 검색이 3 개 단어 중 적어도 하나와 일치 할, 수 있습니다 :

1. Complex 
2. ID 
3. fruit/1a.445/2.10.mango 

예 : - : 대한

{ 
    "name": "Joe", 
    "complexId": "fruit/1a.445/2.10.mango" 
}, 
{ 
    "name": "Matt", 
    "complexId": "car/35.6a5/chevy.20" 
} 

사용자 검색 아래 내 두 문서입니다 blah blah blah fruit/1a445/mango blah blah 같은 그가 아래의 결과를 얻어야한다 :

{ 
    "name": "Matt", 
    "complexId": "fruit/1a.445/2.10.mango" 
} 

나는이 시도하지만 t 실패 오 나에게 어떤 결과를 제공 :

{ 
    "query": { 
     "bool": { 
      "match" : 
      { 
       complexId : "blah blah blah fruit/1a.445/2.10.mango blah blah" 
      } 
     } 
    } 
} 

필드 complexId는 표준 분석기가 있습니다.

도움을 주시면 감사하겠습니다.

답변

1

표준 분석기는 귀하의 경우에는 작동하지 않습니다.

특수 문자가 있으므로 ElasticSearch에 저장하는 동안 무시됩니다. 대신 whitespace 분석기를 사용해보십시오.

POST _analyze 
{ 
    "analyzer": "whitespace", 
    "text": "blah blah blah fruit/1a.445/2.10.mango blah blah" 
} 

다른 분석기로 놀고 사용자의 요구에 가장 적합한 것을 찾으십시오.

사용자 지정 분석기도 만들 수 있습니다.