2013-08-14 3 views
19

색인을 작성하는 동안 분석기를 지정하고 이름을 지정한 다음 해당 이름을 매핑에 사용하고 싶습니다. 내가 잃어 버렸어, 내 ES 인스턴스는 항상 나에게 오류 메시지를 반환합니다.ElasticSearch에서 색인을 생성하는 동안 분석기를 지정하는 방법

"settings": { 
    "mappings": { 
    "alfedoc": { 
     "properties": { 
     "id": { "type": "string" }, 
     "alfefield": { "type": "string", "analyzer": "alfeanalyzer" } 
     } 
    } 
    }, 
    "analysis": { 
    "analyzer": { 
     "alfeanalyzer": { 
     "type": "pattern", 
     "pattern":"\\s+" 
     } 
    } 
    } 
} 

을하지만이 작동하지 않습니다 :

이, 약, 내가 뭘하고 싶습니다있다 배아 줄기 인스턴스는 항상 나에게

내가 (매핑 등 내부)하지만 아무 소용이 여러 곳에서 사전의 "analysis" 지점을 퍼팅 시도
MapperParsingException[mapping [alfedoc]]; nested: MapperParsingException[Analyzer [alfeanalyzer] not found for field [alfefield]]; 

같은 오류를 반환합니다. 나는 일하는 완전한 예제 (나는 지금까지 찾을 수 없었던 것)가 함께 나를 도울 것이라고 생각한다. 아마도 나는 다소 기본적인 것을 놓치고있을 것입니다.

답변

27

"분석"은 색인을 만들 때 "매핑"블록 앞이나 뒤에있는 "설정"블록에 있습니다.

"settings": { 
    "analysis": { 
     "analyzer": { 
      "alfeanalyzer": { 
       "type": "pattern", 
       "pattern": "\\s+" 
      } 
     } 
    } 
}, 
"mappings": { 
    "alfedoc": { ... } 
} 

여기에 좋은 완벽한 예입니다 : Example 1

+4

예, 참, 내가 잊었던 "설정"에서 마지막 중괄호. 따라서 "설정"및 "매핑"은 2 개의 개별 블록이어야하며 "분석"은 "설정"블록에 포함되어야합니다. –

+0

예제에 대한 훌륭한 링크, 감사합니다. – pulkitsinghal

+1

링크를 가져 주셔서 감사합니다. 그러나 매핑이 실제로 특정 속성에 대해 사용할 분석기를 지정하는 요점은 내가 가장 어려운 시간에 예제를 찾는 것입니다. 그것은 당신의 대답에 큰 도움이 될 것입니다;) –

관련 문제