Home Elastic search basic concepts
Post
Cancel

Elastic search basic concepts

입사초기에 정리했던 내용 search_engine_diagram

I. 검색 엔진 작동 방식

  • Crawler가 웹에 있는 웹페이지들을 방문하여 해당 페이지 내 + 링크된 페이지 + 링크된 페이지의 페이지 + 링크된 페이지의 페이지의 …. 의 모든 내용을 읽어와서 가공 후 저장
    • Webpage를 저장하는 DB에 저장
    • 페이지 내용, 중요도 등을 기준으로 가공하여 Index를 만들어 Index DB에 저장
  • 사용자가 입력한 정보를 Index로 바꿔서 Index DB에서 검색
  • Index DB에서 찾은 데이터를 Webpage를 저장해놓은 DB에서 가져오기
  • 기존 RDBMS에 대용량의 정보를 가지고 있는 경우 검색에 많은 시간이 필요하다. 한줄 한줄 필드값을 비교 & 확인해야하기 때문에

II. 설치 및 실행방법 (5.5.x && 6.6.x 사용)

  • homebrew로 설치하면 최신 버전이 설치되기 때문에 직접 받아서 압축을 풀어야한다.
  • 공식문서의 Installation example with tar를 참고하여 설치 (6.6 버전 기준이지만 5.5도 파일만 받아서 똑같은 방식으로 하면됨)
  • 압축을 푼 폴더에서 bin/elasticsearch를 실행하면된다.
  • config/elasticsearch.yml 파일에는 보안, 메모리 설정, 분산환경(클러스터/노드) 설정 등을 포함하고 있다.
  • 두가지 버전을 사용하므로 path에는 등록하지 않는 것이 낫다.

III. 기본 개념

  • Lucene(루씬) 기반으로 개발된 오픈소스 분산 검색엔진
    • Lucene은 Apache에서 개발한 오픈소스 프로젝트
    • 확장 가능한 고성능 정보검색(IR, Information Retrieval) 라이브러리
    • Index와 Search를 간단하게 추가할 수 있음
  • JSON을 데이터 모델로 사용
    • 타입을 자동으로 매핑
    • NoSQL처럼 사용 가능
  • Index를 이용해서 빠르게 검색할 수 있음
  • Cluster로 이루어짐
    • Cluster란 여러개의 노드(서버) 집합
  • REST API를 지원
    • Documenrt 추가, 검색, 삭제, 업데이트 API를 HTTP Call을 통해서 부른다
  • RDBMS와 ElasticSearch 비교
RDBMSElasticSearch
DatabaseIndex
TableType
RowDocument
ColumnField
SchemaMapping
IndexEverything is indexed
SQLQuery DSL

IV. 참고링크

This post is licensed under CC BY 4.0 by the author.