[Elastic Search] 검색 엔진 개념

Baedonguri·2023년 2월 6일
0
post-thumbnail

우리 회사에서는 DynamoDB에 Elastic Search를 붙여서 검색 시스템을 운영한다.
나는 입사 5개월차 뉴비 갭알자. 최근들어 검색에 관련된 API 개발을 하나씩 맡게 되어
이와 관련된 내용을 공부하고 기록을 남겨보려고 한다.

이번 포스팅에서는 간략한 검색 엔진 개념에 대해 남겨보도록 함.


1. About Search Service

검색 서비스란 사용자가 원하는 검색어에 대한 결과를 제공하는 서비스로,
검색 서비스를 부르는 용어는 검색엔진, 검색 시스템, 검색 서비스 등의 용어가 대표적임

A. 검색 엔진

  • 검색 엔진(Search Engine)은 광활한 웹에서 정보를 수집해 검색 결과를 제공하는 프로그램
  • 검색 결과로 제공되는 데이터의 특성에 따라 구현 형태가 각각 달라짐
  • 야후가 개발한 디렉터리 기반의 검색 결과를 바탕으로, 요즘에는 다양한 분야에서 대범주에 따른
    카테고리별 검색 결과가 주로 사용됨

B. 검색 시스템이란?

  • 대용량 데이터를 기반으로 신뢰성 있는 검색 결과를 제공하기 위해 검색엔진을 기반으로
    구축된 시스템
  • 수집기를 이용해 방대한 데이터를 수집하고 이를 다수의 검색엔진을 이용해 색인하고,
    검색 결과를 UI로 제공.
  • 시스템 내부 정책에 의해 관련도가 높은 문서를 상위에 배치할 수 있고, 특정에 필드나 문서에
    가중치를 둬서 검색의 정확도를 높일 수 있음

C. 검색 서비스란?

  • 검색엔진을 기반으로 구축한 검색 시스템을 활용해 검색 결과를 서비스로 제공.

2. Components of Search System

  • 수집기 : 정보를 수집하는 역할
  • 스토리지 : 수집한 정보를 저장하는 역할
  • 색인기 : 수집한 데이터를 검색에 적절한 형태로 변환하는 역할
  • 검색기 : 색인된 데이터에서 일치하는 문서를 찾는 역할

3. About Elastic Search

엘라스틱 서치(Elastic search)는 Lucene 라이브러리에 기반을 둔 검색 엔진이다.
HTTP 웹 인터페이스와 스키마가 없는 JSON 문서를 갖춘 분산형 multitenant를 지원하는 전체 텍스트 검색 엔진을 제공한다.
Elastic Search는 웹 검색, 로그 분석 및 기타 데이터 분석 사용 사례에 사용되며,
mission-critical 애플리케이션을 위한 확장 가능한 검색, 강력한 분석 및 고급 보안 기능을 제공함


4. Difference between RDB and Elastic search

  • RDBMS: 테이블, 행 및 열을 사용하여 데이터를 저장하는 전통적인 구조화된 데이터베이스.
    RDBMS는 구조화된 데이터와 트랜잭션을 잘 처리하며, 복잡한 트랜잭션에 대한 강력한 일관성과 지원이 필요한 애플리케이션에 널리 사용됨.(ex: 은행 시스템)

  • Elastic search: 대량의 데이터를 처리하도록 설계된 분산형 오픈 소스 검색 및 분석 엔진.
    구조화되지 않은 데이터 모델을 사용하며 전체 텍스트 검색 엔진인 Apache Lucene 위에 구축되었음.
    대량의 비정형 또는 반정형 데이터를 처리하는 데 능숙하며, 검색, 분석 및 로그 분석에 자주 사용됨.

요약하자면, RDBMS는 정형 데이터, 트랜잭션 및 복잡한 쿼리에 더 적합한 반면,
Elastic search는 비정형 데이터, 전체 텍스트 검색 및 실시간 분석에 더 적합함.


5. Advantages of elastic search

  • 확장성 (Scalability): Elastic Search는 클러스터에 노드를 추가하여 수평적으로 확장할 수 있는 분산 시스템. 이를 통해 증가하는 데이터 및 트래픽을 쉽게 처리할 수 있다.

  • 검색 기능 (Search capabilities): Elastic Search는 전체 텍스트 검색을 위해 설계되어 강력한 검색 기능과 유연한 쿼리 기능을 제공한다. 복잡한 검색 쿼리, 지리 공간 검색 등 다양한 검색을 지원합니다.

  • 실시간 분석 (Real-time analytics): Elastic Search는 실시간으로 많은 양의 데이터를 집계하여 실시간 통찰력과 분석을 제공할 수 있다.

  • 고가용성 (High availability): Elastic Search는 고가용성을 위해 설계되었으며 장애로부터 자동으로 복구할 수 있다.

  • 오픈 소스 (Open source): Elastic Search는 오픈 소스 소프트웨어이며 사용자와 개발자로 구성된 크고 활발한 커뮤니티를 가지고 있다. 즉, 사용자는 다양한 플러그인 및 통합뿐만 아니라 빠른 버그 수정 및 기능 업데이트의 혜택을 받을 수 있음.

  • 사용 편의성 (Ease of use): Elasticsearch는 RESTful API와 간단한 JSON 기반의 데이터 형식을 갖추고 있어 다른 시스템과 쉽게 사용하고 통합할 수 있음.

  • 비용 효율적 (Cost-effective): Elastic 검색은 오픈 소스이기 때문에 사용자는 독점 소프트웨어 라이센스 비용을 피할 수 있으므로 많은 사용 사례에서 비용 효율적인 솔루션임.

profile
Software Engineer

0개의 댓글