ELK

Elasticsearch + Kibana - 3 (형태소 분석기 추가)

김모우 2020. 12. 11. 12:11
728x90
반응형

 

 

저번에 포스팅에서 입력한 Basketball 관련 데이터 입력 시 공백에 따라 데이터가 구분되는 현상을 수정하기 위해

형태 소 분석기 nori를 추가하였고, termvector 데이터 확인 시 최대 3개의 데이터("Golden" + "State" + "Warrios")를 합쳐야 생성가능한 Terms가 있어 max_shingle_size까지 설정해주었습니다.

 

 

1. 기존 인덱스 삭제

 

- 기존 생성되어 있던 인덱스 패턴을 삭제해줍니다.

# curl -X DELETE 'localhost:9200/basketball?pretty'

 

 

2. Mapping 파일 수정

 

- Mapping 파일에 형태소 분석기 내용과 shingle_size 관련 내용을 추가해 줍니다.
- vim basketball_mapping.json
.
.
.
{ "settings": { "analysis": { "analyzer": { "nori_discard": { "tokenizer": "nori_t_discard", "filter": "shingle" } }, "tokenizer": { "nori_t_discard": { "type": "nori_tokenizer", "decompound_mode": "discard" } }, "filter": { "shingle": { "type": "shingle", "token_separator": "", "max_shingle_size": 3 } } } }, "mappings" : { "properties" : { "team" : { "type" : "text", "fields": { "nori_discard": { "type": "text", "analyzer": "nori_discard", "search_analyzer": "standard" } } }, "name" : { "type" : "text", "fields": { "nori_discard": { "type": "text", "analyzer": "nori_discard", "search_analyzer": "standard" } } }, "points" : { "type" : "long" }, "rebounds" : { "type" : "long" }, "assists" : { "type" : "long" }, "blocks" : { "type" : "long" }, "submit_date" : { "type" : "date", "format" : "yyyy-MM-dd" } } } } 
.
.
.
: wq


- 위와 같이 형태소 분석기를 추가하고, 기존 team, name Terms에 형태소 분석기를 연결해 주었습니다.

 

 

3. 인덱스 및 Mapping 생성

 

# curl -H 'Content-Type: application/json' -X PUT 'localhost:9200/basketball?pretty' --data-binary @basketball_mapping.json


- 위와 같이 정상적으로 생성되었습니다.

 

 

4. 데이터 푸쉬

 

- 기존 가지고 있는 JSON 데이터를 POST 요청으로 _bulk 쪽으로 보냅니다.
# curl -H 'Content-Type: application/json' -X POST 'localhost:9200/basketball/_bulk?pretty' --data-binary @bulk_basketball.json

 

 

5. 인덱스 패턴 생성 및 데이터 확인

 

- Kibana 접속 후 기존 인덱스 패턴 삭제 후 재 등록을 해줍니다.
- Visualize 접속 후 데이터 확인 작업을 진행합니다.


- 위와 같이 기존에 공백으로 분리되던 데이터들이 정상 출력되는 모습을 볼 수 있습니다.

 

728x90
반응형