위의 두가지 문제점만 보아도 엘라스틱 서치를 사용해야 할 이유가 타당해보였고 이에 엘라스틱서치를 사용한 검색 기능 구현을 진행하기로 했다
위의 설명을 읽어도 감이 안 온다면 아래 실습을 따라해보자 감이 올것이다.
터미널을 켜준 뒤
1. cd ~
2. mkdir elastic
: (디렉토리=폴더를 elastic이라는 이름으로 만들어줌)
3. vi els.yml
: 해당 els라는 이름을 가진 yml 파일을 만들어서 아래 내용을 작성해준다. (이 작업의 경우 vscode로도 가능)
디렉토리 위치: 본인이름@본인이름-MacBookPro elastic
version: '3.7'
services:
es:
image: docker.elastic.co/elasticsearch/elasticsearch:{version=원하는 버전을 작성}
container_name: es(이부분 변경 가능)
environment:
- node.name=single-node
- cluster.name=backtony
- discovery.type=single-node
ports:
- 9200:9200
- 9300:9300
networks:
- es-bridge
kibana:
container_name: kibana
image: docker.elastic.co/kibana/kibana:{version}
environment:
SERVER_NAME: kibana
ELASTICSEARCH_HOSTS: http://{container_name=우리가 지정해준 이름}:9200
ports:
- 5601:5601
# Elasticsearch Start Dependency
depends_on:
- {이름 지정}
networks:
- es-bridge
networks:
es-bridge:
driver: bridge
[예시]
version: '3.7'
services:
es:
image: docker.elastic.co/elasticsearch/elasticsearch:7.17.9
container_name: es
environment:
- node.name=single-node
- cluster.name=backtony
- discovery.type=single-node
ports:
- 9200:9200
- 9300:9300
networks:
- es-bridge
kibana:
container_name: kibana
image: docker.elastic.co/kibana/kibana:7.17.9
environment:
SERVER_NAME: kibana
# Elasticsearch 기본 호스트는 http://elasticsearch:9200 이다.
# 현재 docker-compose 파일에 Elasticsearch 서비스 명은 es로 설정되어있다.
ELASTICSEARCH_HOSTS: http://es:9200
ports:
- 5601:5601
# Elasticsearch Start Dependency
depends_on:
- es
networks:
- es-bridge
networks:
es-bridge:
driver: bridge
docker compose -f els.yml up -d
: 해당 설정파일로 도커 컴포즈 실행docker compose -f els.yml up -d
: 기존 docker 실행 중단(삭제)
Dockerfile 작성
Dockerfile
디렉토리위치 - 본인이름@본인이름-MacBookPro elastic
ARG VERSION
FROM docker.elastic.co/elasticsearch/elasticsearch:${VERSION}
RUN elasticsearch-plugin install analysis-nori
els.yml
수정version: '3.7'
services:
es:
build:
context: .
args:
VERSION: 7.17.9
container_name: es
environment:
- node.name=single-node
- cluster.name=backtony
- discovery.type=single-node
ports:
- 9200:9200
- 9300:9300
networks:
- es-bridge
kibana:
container_name: kibana
image: docker.elastic.co/kibana/kibana:7.17.9
environment:
SERVER_NAME: kibana
# Elasticsearch 기본 호스트는 http://elasticsearch:9200 이다.
# 현재 docker-compose 파일에 Elasticsearch 서비스 명은 es로 설정되어있다.
ELASTICSEARCH_HOSTS: http://es:9200
ports:
- 5601:5601
# Elasticsearch Start Dependency
depends_on:
- es
networks:
- es-bridge
networks:
es-bridge:
driver: bridge
docker compose -f els.yml up -d
: 도커 재실행위의 작업이 끝나면 nori가 같이 설치되고 이를 확인하려면 localhost:5601 kibana 기본설정 주소로 들어가서 consol에서 Dev Tool을 친 뒤에 테스트 명령어를 보내면 됩니다.
해당 주소로 들어간다.(http://localhost:5601)
Dev Tool 검색
명령어 작성 후 테스트해보기