본문 바로가기
책벌레와 벌레 그 사이 어딘가/개념쌓기

[개념쌓기] ElasticSearch VS Solr /검색엔진

by veganwithbacon 2022. 9. 22.
반응형

검색엔진의 양대 산맥으로 불리는 ElasticSearch와 Solr는 무엇이 다를까

(실질적으로 크게 쓰이는 검색엔진은 대표적으로 3가지이지만 무료로 사용할 수 있는 엔진을 택하다보니 솔라/엘라스틱 서치를 비교하게 되었다)

 

  우선 검색 엔진이 무엇인지 알아보자

검색엔진(Search engine)?

:  웹에 존재하는 많은 양의 정보 중에서 사용자가 원하는 정보만을 여러 웹사이트나 웹페이지 등에서 검색해주는 시스템/프로그램 등을 통틀어 말한다 

 

  검색 엔진 원리

 

검색 엔진 원리(로봇 검색 엔진)

1. Crawling : 정보 찾아오기

크롤러(또는 스파이더)란 웹상의 문서나 이미지,영상 등을 주기적으로 검색하고 취합하여,자동으로 데이터베이스화시키는 프로그램으로 봇(Bot)이라고도 불린다.

 

- 크롤러가 웹사이트를 옮기며 정보를 수집한다

 

- 새로운 웹페이지나 기존에 방문한 웹페이지 중 업데이트된 페이지를 방문한다

 

- 이때, 공개된 사이트의 정보만 수집하는데 이는 크롤러가 robots.txt파일을 통해 확인한다.

robots.txt에서 "허용한다"라고 하면 정보를 가져오고, "허용하지 않는다"하면 정보를 가져오지 않는다.

다음은 네이버 웹마스터도구에서 확인할 수 있는 robots.txt내용이다.

2. Indexing : 컨텐츠 색인

- 색인된 페이지는 거대한 데이터베이스에 저장하게 된다.

- 인덱싱의 과정은 특정 키워드로 웹페이지를 할당하고 단어와 내용이 웹페이지를 위한 최선의 설명인지 확인하는 과정

 

3. Process : 검색 처리 

- 검색을 시작하면 검색엔진이 검색어와 DB에 색인하여 저장된 웹페이지를 비교

- 그 수백만개의 웹페이지들 중 키워드 관련성을 체크하기 위해 계산

 

 

4. Calculating Relevancy : 관련도 계산

- 관련도 계산(Calculating Relevancy)하기 위한 알고리즘은 굉장히 다양해서 각각의 알고리즘은 키워드,링크,메타태그 등 다른 관련성의 비중을 두어 체크하게 된다.

- 이러한 이유로 같은 키워드로 구글,야후 등 다른 검색엔진에서 검색 시 같지 않은 검색 결과를 보여주는 것이다

 

5. Retrieving : 검색결과 가져오는 과정

- 브라우저에서 검색 결과를 확인할 수 있도록 웹페이지들을 구분,정리하여 볼 수 있다.

 

 

 

  1. Apache Solr vs. Elasticsearch Engine 성능 및 확장성 벤치마크

성능면에서는 Solr와 ElasticSearch가 거의 동일하다.

그러나 대부분이 정적데이터며 데이터 분석을 위한 완전한 정밀도와 엄청나게 빠른 성능이 필요하다면 

Solr를 사용해보는 것이 좋다

 

검색 Faceted의 경우 Solr가 ElasticSearch보다 정확하고 정밀도를 잃지 않는 부분을 보였다고 한다.

스피드웨건 => Faceted은 검색결과 좁혀보기라고 이해하면 되겠다

특정 엣지의 경우 샤드의 데이터가 배치되는 방식 때문에 ElasticSearch의 집계 결과가 부정확했을수도 있다고 한다.

 

  2. 접근성

단일 프로세스에 있어서 ElasticSearch부분이 좀더 간단하다

SolrCloud는 ElasticSearch와 같은 완전 분산 배포에서는 Solr는 Apache ZooKeeper에 의존하게 된다.

 

Elastic search에는 Zen이라는 ZooKeeper와 유사한 구성요소가 있으나, ZooKeeper는 Elasticsearh 클러스터에서 종종 나타나는 split-brain 문제를 방지함에는 좀더 효율적이다.

 

  간단 요약

  : Solr 

           - 사이즈가 큰 데이터 검색에 용이하며 문서 검색에 적합하지만 색인주기가 느리다(주로 문서검색용)

  : ElasitcSearch

           - 사이즈가 작은 데이터에 대한 속성검색/연관검색/실시간 검색에 용이함(주요 커머스 검색용)

 

아래 두가지 모두 솔라와 엘라스틱을 비교한 표로 참고하면 좋다

 

 추가 용어 정리

노드(Node)  : 분산처리 구조 상 서버와 유사한 개념의 구분 단위

샤드(Shard) : 조각이라는 의미로,분산구조 상 인덱스 단위로서 단일 노드엔 여러 개의 샤드가 존재

샤딩(Sharding) : 관계형 DB에서 대량의 데이터를 처리하기 위한 데이터를 파티셔닝하는 기술

                              =>파티셔닝(partitioning) :  분할하다

 

 

참고 자료:

https://sematext.com/blog/solr-vs-elasticsearch-differences/

https://dev-t-blog.tistory.com/4

https://cyberx.tistory.com/298

https://danidani-de.tistory.com/48

반응형

댓글