2017-04-03 5 views
0

내 유형의 한 필드에 경로 계층 분석기를 추가하려고합니다.elasticsearch에서 한 필드에 대해 여러 분석기를 구성하는 방법은 무엇입니까?

동일한 필드에서 경로 분석기와 역방향 경로 분석기를 구성하여 정상 경로와 한 필드의 역 경로를 얻을 수 있습니다.

예 :

경로 = 그런 내가이 분야를 분석 할 때마다 같은 "/ 각/지침/구조"

나는이 경로 필드를 구성 할, 나는 정상적인 순서로 토큰을 얻을 내가 역을 지정하면 순서를 반대로해야한다.

다음은 나의 매핑입니다.

PUT /elastic_course 
{ 
    "settings": { 
    "analysis": { 
     "analyzer": { 
     "path_analyzer": { 
      "tokenizer": "path_tokenizer" 
     }, 
     "reverse_path_analyzer": { 
      "tokenizer": "path_tokenizer" 
     } 
     }, 
     "tokenizer": { 
     "path_tokenizer": { 
      "type": "path_hierarchy", 
      "delimiter": "/", 
      "replacement": "-" 
     }, 
     "reverse_path_tokenizer": { 
      "type": "path_hierarchy", 
      "delimiter": "/", 
      "replacement": "-" 
     } 
     } 
    } 
    }, 
    "mappings": { 
    "book" : { 
     "properties": { 
      "author": { 
       "type": "string", 
       "index": "not_analyzed" 
      }, 
      "genre": { 
       "type": "string", 
       "index": "not_analyzed" 
      }, 
      "score": { 
       "type": "double" 
      }, 
      "synopsis": { 
       "type": "string", 
       "index":"analyzed", 
       "analyzer":"english" 
      }, 
      "title": { 
       "type": "string" 
      }, 
      "path":{ 
       "type":"string", 
       "analyzer":"path_analyzer", 
       "fields": { 
       "reverse": { 
        "type":"string", 
        "analyzer":"reverse_path_analyzer" 
       } 
       } 
      } 
     } 
    } 
    } 
} 

이 분석기를 구성했습니다. 이제 경로 및 역 경로에 대한 토큰을 얻는 방법은 무엇입니까?

감사합니다.

답변

3

당신은 다른 분석기와 각 path 필드의 서브 필드를 선언 할 수

 "path":{ 
      "type":"string", 
      "analyzer":"path_analyzer", 
      "fields": { 
      "reverse": { 
       "type":"string", 
       "analyzer":"reverse_path_analyzer" 
      } 
      } 
     } 

그런 다음 당신은 당신의 질의에 pathpath.reverse을 참조 할 수 있습니다.

+0

물론 인덱스 설정에서 적절한 분석기를 선언해야합니다. – Val

+0

쿨, 좋아 보인다. 인덱싱시,'path'와'path.reverse' 필드가 ES에 의해 분석 될 것입니다. – Val

+0

미안하지만 나는 이해하지 못합니다. 지금 내 색인에 하나의 문서를 삽입했습니다./book/angular/structural과 같은 경로 필드가 있습니다. 토큰을보기 위해 내 감각적 인 플러그인에서 어떤 쿼리를 실행해야합니까? –