주가 조회 사이트를 구현하면서 상장된 회사 리스트를 Elastic Search에 저장하고, 입력창에 글자를 입력하면 자동완성이 되도록 할 예정이었으나 그 부분까진 진행은 하지 못하였다.
다만 data.go.kr에서 상장된 회사 목록을 가져와서 Elastic Search에 저장하고 해당 데이터를 읽어오는 기능은 구현하였기 때문에 Elastic Search 구성환경을 정리한다. 덧붙여 Elastic Search 데이터를 분석할 수 있는 도구로 Kibana도 같이 구성하여 추후 Elastic Search를 학습할 때 활용할 수 있는 환경도 같이 구축한다. 지난번 PostgreSQL 구축 때와 마찬가지로 Docker를 사용했으며 일반 명령어와 Docker Compose를 통한 방법 2가지를 정리한다.
- Docker 명령어를 통한 구성
- Elastic Search 구성
- Docker에서 Elastic Search 이미지 다운
sudo docker pull docker.elastic.co/elasticsearch/elasticsearch:8.17.0
- _docVol 디렉터리 아래 elastic_data 폴더 생성
# postgreSQL pgdata생성한 _docVol 폴더 아래 추가하는 것 mkdir _docVol/elastic_data
- 컨테이너 실행
성공하게 되면 http:// {IP 주소}:9200으로 접속된다.sudo docker run --name es01 \ -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" \ -e "xpack.security.enabled=false" \ -e "xpack.security.http.ssl.enabled=false" \ -v ~/_docVol/elastic_data:/usr/share/elasticsearch/data \ -d docker.elastic.co/elasticsearch/elasticsearch:8.17.0
- Kibana 구성
- Docker에서 Kibana 이미지 다운
sudo docker pull docker.elastic.co/kibana/kibana:8.17.0
- 컨테이너 실행
http://{IP 주소}:5601으로 접속하면 token 요청 페이지 나옴(이후 설정은 Docker Compose 구성 이후 참고)sudo docker run --name kibana \ -p 5601:5601 \ --link es01:elasticsearch \ -d docker.elastic.co/kibana/kibana:8.17.0
- Elastic Search 구성
- Docker Compose를 통한 구성
- _docVol 디렉터리 아래 elastic_data 폴더 생성
# postgreSQL pgdata생성한 _docVol 폴더 아래 추가하는 것 mkdir _docVol/elastic_data
- docker-compose.yml 파일 작성
version: "3.8" services: elastic: image: docker.elastic.co/elasticsearch/elasticsearch:8.17.0 container_name: es01 ports: - "9200:9200" - "9300:9300" environment: - discovery.type=single-node - xpack.security.enabled=false - xpack.security.http.ssl.enabled=false volumes: - elastic_data:/usr/share/elasticsearch/data healthcheck: test: curl -s http://localhost:9200/_cluster/health || exit 1 interval: 10s timeout: 5s retries: 5 restart: unless-stopped kibana: image: docker.elastic.co/kibana/kibana:8.17.0 container_name: kibana ports: - "5601:5601" environment: - ELASTICSEARCH_HOSTS=http://es01:9200 depends_on: elastic: condition: service_healthy restart: unless-stopped volumes: elastic_data: driver: local driver_opts: type: none o: bind device: ~/_docVol/elastic_data
- docker compose 명령 실행
sudo docker-compose up -d
- 동작 환경 설정
- Kibana 컨테이너를 실행하고 웹페이지를 보면 token 요청
- Elastic Search 컨테이너를 통해 token을 생성
sudo docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
- 생성된 Token을 Kibana UI Page에 붙여 넣음
- Configure Elastic 버튼 클릭하면 verification-code 요청 페이지 나옴
- 아래와 같이 Kibana 컨테이너를 통해 Code를 생성
sudo docker exec -it kibana ./bin/kibana-verification-code
- Setup이 진행되고 완료되면 로그인 창 나옴
- ID, PW는 Elastic-Search 접속 계정으로 접속(기본 ID: elastic, PW: changeme)
- 아래와 같이 Kibana 접속이되면 Elastic Search와 Kibana 동작을 확인 할 수 있음
- Kibana 컨테이너를 실행하고 웹페이지를 보면 token 요청