검색 엔진을 활용한 검색 API를 만들기전에, 활용해야할 인프라를 구축해보자 의존 인프라,작동 소스코드,기능테스트를 위한 최소 스키마및 데이터 준비 를 모두 도커로 올인화하여 로컬 개발을 가속화 시킴과 동시에 다양한 복제환경구성이 용이할것이다. |
원본 데이터는 RDB(mysql)에 유지하고 ,검색 스키마(문서)를 엘라서틱서치와 동기화하여
사용자 레벨에서는 엘라서틱 서치의 고성능 검색기능을 활용할것이다.
의존 구성 인프라를 로컬에 모두 구성할수 있게, 도커 컴포져로 다음과 같이 구성하였습니다.
위치 : 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
명령을 수행하면 검색 데이터 파이프라인에 필요한 구성요소가 모두 실행됩니다.
구성요소 요약:
실행 : http://localhost:5000/swagger/index.html
본 프로젝트는 Swagger로 모두 테스트및 싱행가능하며 , reindex를 하면 풀인덱싱처리를 합니다.
mysql의 스키마 데이터를읽어와 엘라서틱 서치에 인덱싱처리를 합니다.
최초 버전은, 검색,풀인덱싱 두가지 기능만 존재하며
다음 검색에 필요한 주요기능을 고려하여 확장 개발 될 예정입니다.
검색처리를 위한 주요 용어정리:
실행 : http://localhost:5601/app/kibana
reindex를 수행하면 키바나를 통해서 baseitem 의 인덱스가 생성됨을 알수 있습니다.
키바나에 검색 인덱스 데이터를 연결하면 , 검색 데이터를 시각화할수 있으며
인덱스를 효율적으로 관리할수 있습니다.
검색 문서가 키바나를 통해 검색이 되면.... 검색 API를 만들기 위한 인프라 준비가 완료되었습니다.
검색 API에서는 엘라서틱 서치가 제공하는 API를 활용하여 커스텀한 검색 API제작이 진행될 예정입니다.