현재 서비스에서는 ES를 1차 DB로 사용하지 않고, 검색 엔진으로 사용하기 때문에 DB와 ES를 동기화해야합니다.
Logstash라는 ELK 스택 중 하나를 사용하면, 이런 데이터 처리 과정을 조금은 수월하게 지원해줘서 이번에는 Logstash를 활용해 DB를 동기화를 수행한다.
config/logstash.conf
input {
jdbc {
jdbc_driver_library => "드라이버 위치"
jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
jdbc_connection_string => "DB 주소"
jdbc_user => "DB User"
jdbc_password => "DB Password"
statement => "SELECT query"
schedule => "* * * * *"
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "test-diary1"
document_id => "test-%{diaryid}"
}
stdout {
codec => rubydebug
}
}
외부 서버 DB와 ES를 동기화 하기 위해서 Logstash를 사용한다.
JDBC 플러그인을 사용해 외부 DB와 커넥션을 연결할 수 있도록 구성하고, 매 분 현재 ES 저장소의 데이터와 updatedAt 정보를 비교해 일치하지 않는다면 데이터를 최신화 하고 있다.
데이터 동기화 화면
서비스에 특성 상 검색의 정확도를 높히기 위해서 몇가지 전처리를 수행해야한다.
ES에서 가장 중요한 개념은 역색인이다.