2016-08-29 6 views
0

ES로 선행 검색을 만들었습니다. 나는 ngram 분석기를 가지고 부분 일치를 원합니다. 또한 필자는 필드 시작 부분에서 일치하는 항목을 위로 올려야하므로 prefix_phrase 쿼리를 사용합니다.탄성 검색 - 원본 필드 쿼리

제 문제는 prefix_phrase의 원래 값을 쿼리해야하거나 원하는 모든 것을 제공하지 않아서 일치하는 모든 ngram과 일치한다는 것입니다.

예 :

emails: [[email protected], [email protected]] 
search: 123 

나는 123_something 먼저 돌아오고 싶다. 그러나 ngram 분석기로 인해 [email protected] 값은 접두사 조회와 일치합니다.

{ 
    match: { 
     query: 123 
     type: 'prefix' 
     fields: ["email"] 
     original: 1 
    } 
} 

같은

뭔가 (실제로 문서에 저장되는 값 일명)를 분석 필드의 원래 값을 조회 할 수있는 방법이 있나요 아니면 할 그냥 저장해야 별도의 필드에 원래 값?

이 답변 : search a analyzed field through the stored original value in elasticsearch 존재하지 않는 문서를 가리 킵니다. 여러 영역 값이 사용되지 않는 것처럼 보입니다.

답변

1

이 경우 가장 좋은 방법은 실제로 멀티 필드이며 가장 최근의 문서는 약간 재구성되었습니다. 복수 필드 here에 대해 자세히 알아 보겠습니다.

동일한 필드를 다른 목적으로 다른 방법으로 인덱싱하는 것이 유용한 경우가 종종 있습니다. 예를 들어, 문자열 필드는 전체 텍스트 검색을 위해 분석 된 필드로, 정렬 또는 집계를 위해 not_analyzed 필드로 인덱싱 될 수 있습니다. 또는 표준 분석기, 영어 분석기 및 프랑스어 분석기로 문자열 필드를 색인화 할 수 있습니다.

이것은 다중 필드의 목적입니다. 대부분의 데이터 유형은 fields 매개 변수를 통해 다중 필드를 지원합니다.

전체 예제는 here입니다.