본문 바로가기

Computer/Study

엘라스틱서치 실무가이드(4-2)

4.4] 부가적인 검색 API

 

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

: 엘라스틱서치는 대량의 데이터를 처리하기 위해 기본적으로 데이터를 분상해서 처리한다.

  1. 모든샤드에 검색요청을 브로드캐스팅행서 전달하고 기다린다.
  2. 각 샤드는 자신이 가지고 있는 데이터를 기준으로 검색을 수행하고 그 결과를 리턴한다.
  3. 모든 샤드로부터 검색결과가 리턴되면 해당 결과를 통해 조합하여 최종 질의 결과를 출력한다.

: 즉, 부가적인 환경설정값을 필요로한다. 각자의 데이터 특성이나 검색 패턴에 따라 검색 설정 값을 적절한 값으로 수정한다면 효율적인 클러스터 운영이 가능해진다.

 

▶동적 분배 방식의 샤드 선택

: 부하분산과 장애극복을 위해 원본 샤드의 데이터를 복제한 레플리카 샤드를 함께 운영 > 검색시 모든 샤드에서 검색을 수행시 중복된 결과를 전달 할 수 잇음 > 동일 데이터를 가진 샤드중 하나를 선택해 검색 수행 > 설정을 안했을 경우 라운드 로빈 알고리즘 혹은 동적 분배 방식의 알고리즘 이용.

 

글로벌 타임아웃 설정

: 검색 요청시 타임아웃을 설정하는 것은 중요 > 무거운 쿼리가 타임아웃이 없다면 전체의 시스템에 장애를 야기할 수 있음 > 개별 검색시 리퀘스트바디에 타임아웃을 설정할 수 있으나 매번 요청하기에는 불편을 초래 > 설정을 추가 할 수 있음 > 디폴트(-1, 무제한)

 

4.4.2]Search Shards API

: 검색이 수행되는 노드 및 샤드에 대한 정보를 확인 가능 > 질의를 최적하거나 정상적으로 수행되지 않을때 문제를 해결하는데 유용하게 활용.

 

4.4.3]Multi Search API

: 잦은 서버로의 요청은 성능 하락 야기 > 요청횟수를 줄일 필요가 있음  > Multi Search API의 경우 여러 검색결과를 통합하여 한번에 요청 하여 결과를 종합해 받음.

 

4.4.4]Count API

: 본문에 검색된 문서의 개수가 몇개인지 갯수만 조회가 필요시 사용

 

4.4.5]Validate API

: 쿼리를 실행하기 앞서 쿼리가 유효하게 작성됐는지 검증하는 것이 가능

 

4.4.6]Explain API

: 키워드와 검색 결과의 유사도를 판단하는 _source의 값이 어떻게 계산되는지에 대한 정보를 알고자 할때 사용

 

4.4.7]Profile API

: 쿼리에 대한 상세한 수행 계획과 각 수행 계획별로 수행된 시간을 돌려주는 API > 성능을 튜닝하거나 디버깅할 때 유용하게 활용할 수 있다.

: 쿼리에 대한 내용을 매우 상세하게 설명하므로 결과가 매우 방대하다는 점 > 오히려 결과를 확인하기 어려워짐.