Apache Solr 와
ElasticSearch 두 오픈 소스 검색 엔진에 대하여 비교해 보았다.
( BigData 배치에서도 Search Engine 이 NoSQL 처럼 another 데이타 소스로서 의미를 가질 수 있으며, 기타, 관제, 모니터링, RealTime Alert 등 여러가지 용도로 Search Engine 의 필요성이 대두 되었기 때문이다. )
본 비교는 그러한 Needs 에서 뭘로 솔루션을 선정할까를 (사실 나는 마음이 정해져 있고, 준비도 어느정도 해오고 있었지만..) 내부에서 공유하기 위해 정리 되었다.
여기서부터는 합쇼체....
우선 두 엔진
이외에도 수많은 다른 오픈 소스 엔진들이 있긴 하지만, 위 두 엔진들이 각각 나머지 모두를 합친 것보다
인지도나 커뮤니티 활성도가 높은 상태이므로, 위 두 엔진만 비교토록 하겠습니다. (ASPSeek,
BBDBot, Datapark, ebhath, Eureka, ht://Dig, Indri, ISearch, IXE, Lucene,
Managing, Gigabytes (MG), MG4J, mnoGoSearch, MPS Information Server, Namazu,
Nutch, Omega, OmniFind IBM Yahoo! Ed., OpenFTS, PLWeb, SWISH-E, SWISH++,
Terrier, WAIS/ freeWAIS, WebGlimpse, XML Query Engine, XMLSearch, Zebra, and
Zettair.)
Cloud Service Base 의 Search Engine 도 존재합니다. SMS 나 결제 시스템 사용하듯이, 종량제 과금으로 Cloud 버전의 Search 서치 서비스를 사용할 수 있으며, 대표적인 것은 Amazon CloudSearch(http://aws.amazon.com/ko/cloudsearch/)
입니다.
[1] 사전 비교 자료 조사.
두 검색엔진을 비교한 수많은 아티클이 존재합니다. 구글 기준, 최근 트랜드와 자체 검색엔진 랭킹을 반영한, Top 5 Page 의
아티클 들은 다음과 같습니다.
[KeyWord : solr vs elasticsearch]
[ 어느 한쪽에 치우치지 않았습니다. ]
2. http://stackoverflow.com/questions/10213009/solr-vs-elasticsearch
: 두 엔진의 장단점을 답변자가 요약해서 보여주고 있습니다.
[ elasticsearch 가 좋다에 치우쳐 있습니다. ]
3. http://blog.sematext.com/2012/08/23/solr-vs-elasticsearch-part-1-overview/
: 6개 chapter 로 나누어 각각을 비교하고 있으며,
상세한 설명이 곁들여져 있으며, 벤치마크 자료들이 첨부되어 있으나, 다소 옛날(2012-08) 자료 입니다.
4. http://www.solrtutorial.com/solr-vs-elasticsearch.html
: solr 커뮤니티에서의 두 엔진 비교 페이지 입니다. 두 엔진은 대등하다라고 표현하고
있습니다.
5. http://www.slideshare.net/sematext/battle-of-the-giants-apache-solr-vs-elasticsearch-apachecon
: 슬라이드쉐어 자료입니다. 솔라 쿡북 저자가 만든 자료입니다. 방대한 항목에 대하여 두 엔진의 방식을 설명하고 있습니다.
http://www.slideshare.net/sematext/battle-of-the-giants-round-2-apache-solr-vs-elasticsearch?next_slideshow=1 : 요게 더 최신의 2탄 슬라이드 자료 입니다.
http://www.slideshare.net/sematext/battle-of-the-giants-round-2-apache-solr-vs-elasticsearch?next_slideshow=1 : 요게 더 최신의 2탄 슬라이드 자료 입니다.
[keyword : elasticsearch vs solr]
4. http://thinkbiganalytics.com/solr-vs-elastic-search/
: 8개 항목에서 4:4 의 동일 스코어를 보이며, 어느
한쪽이 승자라고 말하고 있지 않습니다.
ElasticSearch Win Category : Foundations , Automatic Shard Rebalancing , Nested Typing , Percolation Queris
ElasticSearch Win Category : Foundations , Automatic Shard Rebalancing , Nested Typing , Percolation Queris
Solr Win Category : Shard Splitting , Distributed Group By ,
Community , Vendor Support
[2] 구글
트랜드
[결론]
위 내용들을 종합한 각 엔진의 주요 장점은 다음과 같습니다.
ElasticSearch 강점
(1) 최근
트랜드 상으로는 좀더 상승세를 타고 있습니다. ( 구글 트랜드, 최신 Code Commit 수 , Code Comment 수 등)
(2) ElasticSearch 가 좀더 최신에 생긴 Open Source
Community 이고, Solr 의 단점을 개선하는 목적의 개선 features를 많은 부분 목표로 삼고 태생하였습니다.
(3) Nested Type, Nested Document , 분산서치에서의 Join 서포트, Lucene Query 외에도 복잡한 Structured Query 서포트가
가능합니다.
(4) 자동화된
밸런싱, HA 구성을 위한 자체적인 Master Node 선정
관리( Solr 는 zookeepr 쿼럼에게 위임하고 있습니다. )
(5) 운영중
스키마 변경이 가능합니다. ( Solr 는 리스타트가 필요함. )
(6) Realtime Features
A. Solr의 인덱스 갱신 주기가 수십분 빨라도 수분 정도임에 반하여,
ElasticSearch 는 1초정도 입니다.
B. Percolation Query 라는 새로 생겨난 기법이 존재하여, 특정
쿼리를 등록해 두고, 해당 쿼리에 부합하는 신규 인덱스가 등록되면, 얼럿
해주는 기능이 추가되었습니다.
C. Log 패턴을 보고 이상 징후를 감지하는 등에 활용 가능할 듯 합니다.
Solr 강점
(1) ElasticSearch 가 신생 엔진이라고 한다면, Solr 는 이미
안정화 단계를 지난 검색엔진 입니다.
(2) 이로
인하여 많은 아티클, 경험자, 커뮤니티 아티클, 기여 기업 등이 존재합니다.
(3) Vendor Support 가 가능합니다.
(4) Pivot Query 기능, JMX 노출 등의 기능이 있습니다.
(5) PHP , Python Ruby , Java 등의 Serialized
Output 이 가능합니다.
(6) Primary Shard 넘버를 바꿀 수 있습니다. (반면에, ElasticSearch 는 default 5 이고, replication 개수는 자유롭게 늘릴수 있으나, 디폴트 샤딩
개수를 변경하지 못합니다.)