[ Elastic Search ] Reindexing

김우경·2020년 11월 15일
0
post-thumbnail

Elastic Search Reindexing

  • 데이터 베이스의 스키마와 같이 mapping 정보 확인 가능
    -> 기본적으로 데이터 post시 mapping 정보 생성
  • 특정 feild의 유의어, 동의어 검색시 새 path mapping 필요
    e.g. Timelinedtl의 경우 timelinedtlanalyzer column에 "analyzer": “synonym" 매핑 정보 필요
    -> 데이터 있는 상태에서의 mapping 정보 변경은 까다로우므로 새 스키마 정의 후 리인덱싱

** 기존 index (kim_es)에서 새 index(kim_es2)로 mapping 정보 수정 후 재인덱싱 하는 경우

1. PUT으로 스키마 재정의


: 기존 mapping 정보에서 수정하고자 하는 부분 수정 후 PUT method를 이용해 새 인덱스 정의

2. Reindexing


-> 기존 인덱스의 데이터까지 옮겨짐을 확인할 수 있음

(기존 인덱스와 호환하고 싶을 경우 aliases 지정)

3. 기존 인덱스 삭제

4. Kaizen 에서 결과 확인

  • 기존의 인덱스가 새 인덱스로 reindexing 되고 데이터도 옮겨졌음을 확인할 수 있음

Elastic Search 데이터 색인

  1. 새 데이터 삽입
    e.g. ttimelinedtl에 데이터 post
    • body
  • doc id 지정하지 않을 시 elastic search 에서 자동으로 id값 부여
  1. 기존 데이터 update
    방법 1 POST method
    : insert와 같은 방법으로 post method를 이용해 update 하고자 하는 id의 데이터를 update
    -> 이때 기존의 데이터도 같이 입력해 주어야 함

    문제점
    -> update하고자 하는 데이터의 id를 기억해야함
    -> update 시 기존 reg값은 유지하고(기존 값 그대로 post) upddate를 현재시각으로 update해줘야함

방법 2 update_by_query 이용
-body	
- update하고자 하는 field만 update 가능
- 여러 parameter 사용 가능 (source에서 ,가 아닌 ;로 구분짓기)
- 파라미터 대신 직접 string 이나 정수로 비교 가능

(참고: https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update-by-query.html)

문제점
-> update할 데이터가 지나치게 많으면 멈출 수 있음
- script 이용, kibana에서 sql 사용 등\
profile
Hongik CE

0개의 댓글