검색 엔진을 활용한 검색 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제작이 진행될 예정입니다.