프로그래밍/ElasticSearch 2016. 2. 21. 21:20

얼마전 몇개의 도큐멘트를 갖고 검색환경을 만들었는데, 클러스터 노트의 수가 더 작았음에도 검색 속도는 더 빨랐다는 글을 어디선가 읽었다. 

검색데이터(인덱스의 크기)도 무시 할 수는 없지만, 분산환경에서 특히 무시할 수 없는 것이 커넥션(tcp)비용이다. 그리고 검색이라는 것은 sorting, scoring 에서 많은 파워를 필요하게 된다.

엘라스틱의 경우 쿼리를 받을 경우 두번의 작업을 하게 된다. 해당 키워드들을 찾아 도큐멘트주소(어디노드에 있는지, 어떤 세그멘트에 있는지) 갖고 온 후 각 노드들에 대해 다시 질의한다. 이렇게 두번의 커넥션을 갖게 되는데,  인덱스 도큐멘트가 작은 상태에서 샤드를 여러개로 세팅했다면 당연 모든 노드로 쿼리가 가야하기 때문에 한 샤드에서 가져올때 대비하여 속도에서 더 느린 경험이 될 것 같다.

//