Skip to content

ingest pipeline을 이용한 월별 인덱스 분할삽입 및 관리

Notifications You must be signed in to change notification settings

dontbesatisfied/elasticsearch-monthly-index

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ingest 파이프라인를 이용한 월별 인덱스 분할삽입 및 관리

개요

현재 검색엔진으로 엘라스틱서치를 사용중이며 nori의 user-dictionary가 아닌 사전(mecab)을 직접 변경하여서 다시 nori의 plugin으로 빌드하여 사용중이다. 때문에 사전이 변경될때마다 reindex를 진행중이다. 하지만 점점 데이터가 많아지면서 매일 전체를 reindex하기는 무리가 있다고 판단하여 아래와같이 reindex 전략을 수정하였다.

  1. 전체 reindex는 주말에 한번
  2. 일정기간(유저들의 데이터 접근이 빈번한 기간) reindex는 하루에 한번

index를 일정기간별로 나누어 reindex 시간을 단축하여 사전변경적용을 빠르게하기 위함.

기대효과

  1. 유저들의 접근이 높은 인덱스만 리인덱스하여 시간단축
  2. 유저가 찾고자하는 문서의 날짜를 받아 쿼리를 보낼때 전체 인덱스가 아닌 해당하는 날짜의 인덱스만 쿼리가 가능하여 쿼리 시간 단축

실행방법

build.sh를 실행시키면 한번에 셋팅이 가능합니다. docker-compose의 elasticsearch 메모리 및 포트정도만 조정하면됨.

테스트 결과

전체문서 737752개의 문서로 테스트함

2021-06 데이터 20039개 문서

  1. 리인덱스 시간 단축 / 아직 테스트안함 105034
  2. 쿼리 시간 단축
curl -X POST -d'{
  "query": {
        "match_all": {}
    }
}' http://localhost:9210/mydata/_search
<!-- 1972ms -->

curl -X POST -d'{
  "query": {
        "match_all": {}
    }
}' http://localhost:9210/mydata_2021-05,mydata_2021-06/_search
<!-- 10ms -->

About

ingest pipeline을 이용한 월별 인덱스 분할삽입 및 관리

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages