
검색 데이터 파이프라인 을 , 원본 데이터는 RDB(mysql)에 유지하고
검색 스키마(문서)를 엘라서틱서치와 동기화하여
사용자 레벨에서는 엘라서틱 서치의 고수준/고성능 검색기능을 활용할것이다.
데이터 파이프라인을 먼저 설명한 것은 검색 API를 만들기 위해 필요한 인프라는
RDB와 엘라서틱 서치이다.
위치 : https://github.com/psmon/searchapi/tree/master/Infra
version: '3.5'
services:
searchdb:
image: mysql:5.7
command: --default-authentication-plugin=mysql_native_password
restart: always
ports:
- 13306:3306
volumes:
- ./init/firstsql.mysql:/docker-entrypoint-initdb.d/init.sql
environment:
MYSQL_ROOT_PASSWORD: root
adminer:
image: adminer
restart: always
ports:
- 13307:8080
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.4.0
container_name: elasticsearch
environment:
- xpack.security.enabled=false
- discovery.type=single-node
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
cap_add:
- IPC_LOCK
volumes:
- elasticsearch-data:/usr/share/elasticsearch/data
ports:
- 9200:9200
- 9300:9300
kibana:
container_name: kibana
image: docker.elastic.co/kibana/kibana:7.4.0
restart: always
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
ports:
- 5601:5601
depends_on:
- elasticsearch
volumes:
elasticsearch-data:
driver: local
|
연습 프로젝트의 git을 보두 pull받고 나서 Infra 경로에서
docker-compose up -d명령을 수행하면 검색 데이터 파이프라인에 필요한 구성요소가 모두 실행됩니다.
init.sql 은 검색기능 Spec개발을 위한 기본 스키마및 기본 데이터를 셋팅할수 있습니다.

실행 : http://localhost:5000/swagger/index.html본 프로젝트는 Swagger로 모두 테스트및 싱행가능하며...reindex를 하면 풀인덱싱처리를 합니다.
mysql의 스키마 데이터를 엘라서틱 서치에 인덱싱처리를 합니다.
검색처리를 위한 간단한 용어정리:

실행 : http://localhost:5601/app/kibana
reindex를 수행하면 키바나를 통해서 baseitem 의 인덱스가 생성됨을 알수 있습니다.
키바나에 검색 인덱스 데이터를 연결하면 , 검색 데이터를 시각화할수 있습니다.

검색 문서가 키바나를 통해 검색이 되면.... 검색 API를 만들기 위한 인프라 준비가 완료되었습니다.