모든 데이터 색인을 통해 근 실시간으로 검색 및 분석이 가능한 검색 엔진

책 속의 낱말이나 구절, 또 이에 관련한 지시자를
찾아보기 쉽도록 일정한 순서로 나열한 목록
-> 엘라스틱서치를 통해 정보를 검색하기 위한 색인 작업 필요
DB에 저장된 모든 데이터를 저장
실시간으로 수정된 데이터에 대하여 색인된 데이터를 수정
데이터 정합성의 문제로 인해 두 가지로 나눔
전체색인과 부분색인이 동시에 진행이 되면 데이터 정합성이 안맞는 문제가 발생하기 때문에 항상 개별적으로 실행되어야합니다.
전체 색인이 진행되기 전, 부분 색인이 진행 중인지 체크해야함
전체 색인 시 항상 새로운 인덱스를 생성하고 기존에 사용중이던 인덱스는 백업용으로 보관



엘라스틱서치는 rest api 처럼 구현이 되어있다.

curl -X POST http://localhost:9200/_bulk?pretty -data-binary @classes.json
약 3,000,000개 이상의 상품 데이터를 색인하는데 얼마나 걸릴까?
5000개씩 업데이트 해준 결과 전부 완료되는데 50~1시간 소요
-> async로 2,000개의 데이터를 20개씩 병렬 처리로 indexing 요청
500,000개의 데이터를 약 1분만에 indexing 처리
전부 완료되는데 약 6분~7분 소요

부분 데이터 색인: 이미 색인된 데이터를 최신화 데이터로 재색인해주는 과정
ex) 남성 운동화 -> 남성운|동화 이렇게 나올 수도 있음
Nori tokenizer
남성 | 운동 | 화
1) 사용자 사전 도입 - user_dictionary.txt
사용자 사전에 운동화라는 단어를 넣음으로써 운동화라는 단어가 형태소 분석이 되지 않도록 할 수 있음
2) 동의어 사전 도입 - synonym.txt
사용사 사전과 동의어 사전을 서버에 등록하기 위해서 자동화 배포 필요


뜬금없는 검색결과를 방지하기 위해서 사용한 기능
검색어 : 김치 냉장고 -> 와인 셀러 냉장고 상하 온도 조절(미러형)
1) 매치 쿼리에 and 연산자 조건을 추가했다.
2) "minimum_should_match" : "100%"

엘라스틱 config 파일을 수정함으로써 스레드 카운터를 조정할 수 있음
Query Tuning