2017-04-03 2 views
0

색인을 생성하고 Drupal에서 색인을 생성했습니다. 지금은 실패 하 elasticsearch.yml 파일에 필터 소문자와 asciifolding를 추가하려고하지만 :Elasticsearch 및 Drupal : 필터 소문자 및 asciifolding 추가 방법

index: 
analysis: 
    analyzer: 
    default: 
    filter : [standard, lowercase, asciifolding] 

나는 오류가 있습니다 : IndexCreationException을 :

나는이 줄을 추가 [myindex] 인덱스를 작성하는 데 실패 . 그러나 'myindex'는 이미 존재하며 필터를이 기존 색인에 추가하려고합니다.

인덱싱이 올바르도록 이러한 필터를 어떻게 추가 할 수 있습니까?

도움 주셔서 감사합니다.

답변

0

이 예외가 발생하는 이유는 일반 작성 색인 엔드 포인트를 호출하여 색인 설정을 갱신 할 수 없기 때문입니다. 분석기를 업데이트하려면 '_settings'엔드 포인트를 호출해야합니다.

나는이 작업을 수행하는 방법에 당신을 위해 작은 예를했습니다

:

PUT test 
{ 
    "settings": { 
    "analysis": { 
     "analyzer": { 
     "new_analyzer": { 
      "tokenizer": "standard" 
     } 
     } 
    } 
    } 
} 

GET test/_analyze 
{ 
    "analyzer": "new_analyzer", 
    "text": "NoLowercasse" 
} 

POST test/_close 

PUT test/_settings 
{ 
    "analysis": { 
    "analyzer": { 
     "new_analyzer": { 
     "tokenizer": "standard", 
     "filter": [ 
      "asciifolding", 
      "lowercase" 
     ] 
     } 
    } 
    } 
} 

POST test/_open 

GET test/_analyze 
{ 
    "analyzer": "new_analyzer", 
    "text": "LowerCaseAdded" 
} 

응답 :

{ 
    "tokens": [ 
    { 
     "token": "lowercaseadded", 
     "start_offset": 0, 
     "end_offset": 14, 
     "type": "<ALPHANUM>", 
     "position": 0 
    } 
    ] 
} 

당신은 두 번째 분석 한 후, 소문자 필터가 적용되고 있음을 알 수 . 색인을 닫아야하는 이유는 분석기를 다시 작성해야하기 때문입니다. 이전에 추가 된 문서는이 분석기로 인덱싱되지 않았으므로 오히려 오름차순 및 소문자가없는 새 분석기가 예상대로 작동하지 않습니다. 이 문제를 해결하려면 색인을 다시 작성해야합니다 (예 : Reindex-API)

희망이 있습니다.

편집 : 드루팔 (Drupal-Elastic) 솔루션이 아니기 때문에 응답 속도가 너무 빨라서 올바른 방향으로 향할 수도 있습니다. 솔직히 Drupal과 함께 ES를 실행하는 것에 익숙하지 않습니다.

+0

대단히 감사합니다. 바이런입니다. 실제로 올바른 방향입니다. 그러나 드루팔 (drupal)에 적용 할 수는 없습니다. –

+0

계속 체크하겠습니다. –

+0

새 질문을했는데, 당신에게 알려줍니다. 계속의 ... –