[엘라스틱서치 실무가이드] 효율적인 검색을 위한 환경설정

Posted by 김흥래 on April 13, 2019

다음은 엘라스틱서치 실무가이드의 일부 부분을 발췌한 내용입니다.

이미지01

4.4.1 효율적인 검색을 위한 환경설정

엘라스틱서치는 대량의 데이터를 처리하기 위해 기본적으로 데이터를 분산해서 처리한다. 그렇다면 빠른 검색을 위해 내부적으로는 어떻게 동작하는 것일까?

검색 요청이 발생하면 엘라스틱서치는 모든 샤드에 검색 요청을 브로드캐스팅해서 전달하고 기다린다. 각 샤드는 자신이 가지고 있는 데이터를 기준으로 검색을 수행하고 그 결과를 리턴한다. 그리고 모든 샤드로부터 검색 결과가 도착하면 도착한 모든 결과를 조합해서 최종 질의 결과를 출력한다.

이러한 동작 방식 때문에 제공되는 부가적인 환경설정값이 있다. 각자의 데이터 특성이나 검색 패턴에 따라 이러한 검색 설정 값을 적절한 값으로 수정한다면 좀 더 효율적인 클러스터 운영이 가능해진다.

동적 분배 방식의 샤드 선택

엘라스틱서치는 부하 분산과 장애극복을 위해 원본 샤드의 데이터를 복제한 레플리카 샤드를 함께 운영 한다. 하지만 검색 시 모든 샤드에서 검색을 수행하게 된다면 사용자에게 중복된 결과를 전달하게 될 수도 있을 것이다. 이러한 문제를 방지하기 위해 엘라스틱서치는 검색을 수행할 때 동일 데이터를 가지고 있는 샤드 중 하나만 선택해 검색을 수행한다.

만약 특별히 설정하지 않는다면 검색 요청의 적절한 분배를 위해 기본적으로 라운드로빈(Round Robin) 방식의 알고리즘을 사용한다. 라운드로빈은 순차적으로 샤드를 선택하는 방식이다.

엘라스틱서치에서는 라운드로빈 말고도 동적 분배 방식의 알고리즘도 제공한다. 동적 분배 방식은 검색 요청의 응답시간, 검색 요청을 수행하는 스레드 풀(Thread Pool)의 크기 등을 고려해 최적의 샤드를 동적으로 결정하는 방식이다.

다음 예제는 동적으로 요청을 분배하도록 설정하는 예다.

PUT _cluster/settings
{
	"transient": {
		"cluster.routing.use_adaptive_replica_selection": true
	}
}

참고로 엘라스틱서치 6.x 버전에서는 검색시 라운드로빈 방식의 알고리즘을 사용하는 것이 기본값이었다. 하지만 최근에 릴리즈된 엘라스틱서치 7.0에서부터는 동적 분배 방식의 알고리즘이 기본적으로 사용되도록 변경되었다.

침고 : https://www.elastic.co/guide/en/elasticsearch/reference/7.0/search.html

글로벌 타임아웃 설정

검색 요청 시 타임아웃을 설정하는 것은 매우 중요한 일이다. 자칫 무거운 쿼리가 타임아웃 설정 없이 무한정으로 실행된다면 전체 시스템에 장애가 발생할 수도 있기 때문이다.

개별 검색 요청의 경우에는 Request Body에 직접 타임아웃을 설정할 수 있다. 하지만 이러한 방식은 많은 불편을 초래하기 때문에 모든 검색 쿼리에 동일하게 적용되도록 정책으로 설정하는 것이 좋다.

글로벌로 적용되는 타임아웃의 기본 정책은 무제한(-1)이다. 이를 변경하려면 다음과 같이 설정한다.

PUT _cluster/settings
{
	"transient": {
		"search.default_search_timeout": "1s"
	}
}






Always with you.
책관련 페이스북 Q&A : http://facebook.com/엘라스틱서치-실무-가이드-343249896296014
책관련 유튜브 채널 : https://www.youtube.com/channel/UCcAi2EzWdEobxRsJ14Zo6vg
책관련 문의 메일 : elasticsearch.guide@gmail.com
연관도서  
이미지02 엘라스틱서치를 이용하여 검색사이트 구축 및 운영을 분들을 위한 책입니다.

엘라스틱 실무가이드 (한글 검색 시스템 구축부터 대용량 클러스터 운영까지)
YES24 : http://www.yes24.com/Product/Goods/71893929
이미지03 검색 데이터가 내부적으로 어떻게 색인되는지에 대한 원리를 설명한 책입니다.

실전비급 아파치 루씬7 (엘라스틱서치 검색엔진을 향한 첫걸음)
YES24 : http://www.yes24.com/Product/Goods/66544696
이미지04 Logstash와 Kibana를 이용하여 데이터 시각화를 어떻게 하는지 설명한 책입니다.

실전비급 엘라스틱 스택6.4 (엘라스틱서치, 로그스태시, 비츠, 키바나로 데이터 수집부터 분석, 시각화까지)
YES24 : http://www.yes24.com/Product/Goods/67466481