docker-compose를 활용
version: '3.7'
services:
elasticsearch:
container_name: elasticsearch-test
build: .
volumes:
- ./server/es/data:/usr/share/elasticsearch/data
environment:
- discovery.type=single-node
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xmx256m -Xms256m"
ulimits:
memlock:
soft: -1
hard: -1
ports:
- "9200:9200"
- "9300:9300"
kibana:
container_name: kibana-test
image: kibana:6.6.0
ports:
- "5601:5601"
depends_on:
- elasticsearch
kibana dev tools를 활용한 dsl 쿼리 실행
인덱스 매핑
PUT test
{
"mappings": {
"properties": {
"term": {
"type": "text"
}
}
}
}
문서 추가
PUT text/_bulk
{"index": {"_id": 1}}
{"<field_name>": "<string data>"}
...
{"index": {"_id": 101}}
{"<field_name>": "<string data>"}
...
...
<aside> 💡 한글에 대한 사전을 적용하여 역인덱싱을 보다 효과적으로 수행할 수 있도록 도와주는 역할을 수행한다. 자동완성 구현 및 검색 품질 향상을 위해서 nori 형태소 분석기를 적극 사용하는 것도 좋은 방법이라는 생각이 들었다.
</aside>
elasticsearch container에 들어가서 설치를 하도록 하자
# installation
bin/elasticsearch-plugin install analysis-nori
# deletion
bin/elasticsearch-plugin remove analysis-nori
기본적인 standard tokenizer의 경우는 공백을 기준으로 토큰을 만들었다면 토크나이저의 경우는 한국어 사전 정보를 이용해 토큰을 분리할 수 있다.
nori tokenizer의 옵션으로는 다음이 있다.