2017-12-21 11 views
0

나는이 색인을 pipe으로 사용자 지정 분석기로 사용하고 있습니다. 테스트하려고 할 때 파이프 구분 문자가 아닌 모든 문자를 반환합니다.elasticsearch 맞춤 분석기 테스트 - 파이프 구분 키워드

입력 라인 keywords이 다음과 같이 보이는 사용 사례를 구성하려고합니다. crockpot refried beans|corningware replacement|crockpot lids|recipe refried beans 및 EL은 폭발 한 후에 일치 항목을 반환합니다.

{ 
    "keywords": { 
    "aliases": { 

    }, 
    "mappings": { 
     "cloud": { 
     "properties": { 
      "keywords": { 
      "type": "text", 
      "analyzer": "pipe" 
      } 
     } 
     } 
    }, 
    "settings": { 
     "index": { 
     "number_of_shards": "5", 
     "provided_name": "keywords", 
     "creation_date": "1513890909384", 
     "analysis": { 
      "analyzer": { 
      "pipe": { 
       "type": "custom", 
       "tokenizer": "pipe" 
      } 
      }, 
      "tokenizer": { 
      "pipe": { 
       "pattern": "|", 
       "type": "pattern" 
      } 
      } 
     }, 
     "number_of_replicas": "1", 
     "uuid": "DOLV_FBbSC2CBU4p7oT3yw", 
     "version": { 
      "created": "6000099" 
     } 
     } 
    } 
    } 
} 

다음은 guide 다음에 테스트하려고 할 때입니다.

curl -XPOST 'http://localhost:9200/keywords/_analyze' -d '{ 
"analyzer": "pipe", 
"text": "pipe|pipe2" 
}' 

나는 char-by-char 결과를 얻는다.

{ 
    "tokens": [ 
    { 
     "token": "p", 
     "start_offset": 0, 
     "end_offset": 1, 
     "type": "word", 
     "position": 0 
    }, 
    { 
     "token": "i", 
     "start_offset": 1, 
     "end_offset": 2, 
     "type": "word", 
     "position": 1 
    }, 
    { 
     "token": "p", 
     "start_offset": 2, 
     "end_offset": 3, 
     "type": "word", 
     "position": 2 
    }, 
    { 
     "token": "e", 
     "start_offset": 3, 
     "end_offset": 4, 
     "type": "word", 
     "position": 3 
    }, 

답변

1

잘 했어, 거의 다 왔어.

 "tokenizer": { 
     "pipe": { 
      "pattern": "\\|", <--- change this 
      "type": "pattern" 
     } 
     } 

다음 분석기는 작동이 생산됩니다 : 파이프 | 문자는 정규 표현식에 예약 된 문자이기 때문에, 당신은 다음과 같이 이스케이프 할 필요가

{ 
    "tokens": [ 
    { 
     "token": "pipe", 
     "start_offset": 0, 
     "end_offset": 4, 
     "type": "word", 
     "position": 0 
    }, 
    { 
     "token": "pipe2", 
     "start_offset": 5, 
     "end_offset": 10, 
     "type": "word", 
     "position": 1 
    } 
    ] 
} 
+0

당신이 얼마나 아시나요 인덱스를 다시 작성하지 않고 토크 나이저를 다시 쓰려면? – Pentium10

+0

인덱스 설정에서 분석기를 업데이트 한 다음 인덱스에서 update_by_query를 호출하면 업데이트 할 데이터 – Val

+0

을 새로 고치고 인덱스를 닫은 다음/_settings에 넣은 다음 인덱스를 다시 열어 기다려야합니다. 파편 다시 초기화 – Pentium10