초보 개발자의 스터디룸

[Elastic Search] 엘라스틱서치란? 1. 관련 용어 정리, 특징

justdoIT0730 2023. 1. 5. 10:43
728x90
728x90

ES 게시글

1. Elastic Search 관련 용어 정리

 1.1 ES vs RDBMS

  1.1.1 기본 용어 정리

RDBMS Elastic Search
Database Index
Table Type
Row Document
Column Field
Index Analyze
Primary Key _id
Schema Mapping
Physical Partion Shard
Logical Partion Route
Relational Parent/Child, Nested
SQL Query DSL

  1.1.2 CRUD 용어 비교

RDBMS Elastic Search
Select Get
Insert Put
Update Post
Delete Delete

 

 1.2 ElasticSearch 아키텍쳐 정리

  1.2.1 Cluster(클러스터)

   - ES의 가장 큰 시스템 단위

   - 하나 이상의 노드(서버)가 모인 것으로 이를 통해 데이터를 저장하고 검색하는 기능 제공

   - 서로 다른 클러스터는 데이터 접근, 교환 불가능한 독립적인 시스템으로 유지

   - 여러 대의 서버가 하나의 클러스터 구성 가능, 한 서버에 여러 개의 클러스터 존재 가능

 

  1.2.2 Node(노드)

    - ES를 구성하는 하나의 단위 프로세스

    - 역할에 따라 Master-eligible, Data, Ingest, Tribe 노드로 구분

 

  1.2.3 Index(인덱스)

   -  RDBMS에서 database와 대응하는 개념

   - 도큐먼트를 모은 집합(단위)

   - Indexing(색인) : 데이터를 저장하는 행위

 

  1.2.4 Shard(샤드)

   - 인덱스의 도큐먼트를 분산 저장하는 저장소 : 노드에 분산되어 저장

   - 기본적으로 샤드 단위로 인덱스가 분리

   - Sharding(샤딩) : 데이터 분산 저장하는 방법,  ES에서 스케일 아웃을 위해 인덱스를 여러 샤드로 쪼갠 것

   기본적으로 1개가 존재하며, 검색 성능 향상을 위해 클러스터의 샤드 갯수를 조정하는 튜닝 가능

   - 샤드 구성요소

    1.2.4.1 Primary Shard(프라이머리 샤드)

     - 디폴트 1개의 샤드로 인덱스 구성(7.0ver)

     - 처음 생성된 샤드

    1.2.4.2 Replica(복제본)

     - 클러스터에 노드 추가 시 샤드들은 노드로 분산, 디폴트로 1개의 복제본 생성

    1.2.4.3 예시

1

     - 1개의 인덱스 내 5개의 샤드(0, 1, 2, 3, 4), 클러스터는 4개의 노드로 구성

     - 5개의 프라이머리 샤드와 복제본 총 10개의 샤드가 전체 노드에 분배되어 저장

     - 같은 샤드와 복제본은 동일한 데이터를 담고 있고, 반드시 상호 다른 노드에 저장

 

2

     - 만약 Node-3 노드가 사라지면, Node-3의 0, 4번 샤드도 유실된다.

     - Node-1에 0번, Node-2에 4번 샤드가 각각 남아 있으므로 전체 데이터 정상 사용 가능

 

3

     - 클러스터는 유실된 노드의 복구 대기 → 복구 불가 판단 시 복제 시작

     - Node-1의 0번 샤드를 Node-2로 복제

     - Node-2의 4번 샤드를 Node-4로 복제

 

4

     - 유실되어 8개인 샤드가 10개로 복구

     - 프라이머리 샤드와 리플리카를 통해 ES 운영 중 노드 유실 발생 시에도 데이터의 가용성 무결성 보장

 

  1.2.5 Document(도큐먼트)

   - 데이터 단위

 

 

 1.3 ES의 간단한 프로세스

 

2. Elastic Search 특징

 2.1 분산형 검색 엔진

  - 분산 검색 : 많은 컴퓨터와 네트워크를 사용하여 인덱싱(특정 데이터 골라내는 것) 및 쿼리 처리 등 작업을 진행하는 검색 엔진 기술

 2.2 전문(Full text) 검색 엔진

  - 전문 검색 : 내용 전체를 색인하여 특정 단어가 포함된 문서 검색

  - 내부적으로 역파일 색인구조로 데이터를 저장, 사용자에게 JSON형식으로 데이터 전달

  - Key-value 형식이 아닌 문서기반 : 복잡한 형식의 문서도 저장 가능

  - JSON이 ElasticSearch가 지원하는 유일한 형식, 입력 데이터를 JSON형식으로의 가공이 필요

 2.3 실시간(Real-time) 분석 시스템

  - 클러스터가 실행되고 있는 동안 계속해서 데이터가 입력, 동시에 실시간에 가까운 속도로 검색 및 집계 수행

 

 

 

 

[출처]

https://yoo11052.tistory.com/197

 

[Elasticsearch] Elasticsearch란?

Elasticsearch Elasticsearch는 아파치 루씬(Apache Lucene)기반의 오픈 소스 분산 검색 엔진입니다. Elasticsearch는 NoSQL 기반의 문서 지향 데이터베이스로 JSON 형식의 데이터를 저장하고 검색(Query DSL)할 수 있

yoo11052.tistory.com

https://www.slideshare.net/deview/2d1elasticsearch

https://github.com/exo-archives/exo-es-search

 

GitHub - exo-archives/exo-es-search: ElasticSearch eXo Platform add-on

ElasticSearch eXo Platform add-on . Contribute to exo-archives/exo-es-search development by creating an account on GitHub.

github.com

https://victorydntmd.tistory.com/308

 

[Elasticsearch] 기본 개념잡기

1. Elasticsearch란?Elasticsearch는 Apache Lucene( 아파치 루씬 ) 기반의 Java 오픈소스 분산 검색 엔진입니다.Elasticsearch를 통해 루씬 라이브러리를 단독으로 사용할 수 있게 되었으며, 방대한 양의 데이터를

victorydntmd.tistory.com


https://www.elastic.co/kr/elasticsearch/
https://esbook.kimjmin.net/06-text-analysis/6.1-indexing-data
https://djlee118.tistory.com/m/153
https://the-dev.tistory.com/30
https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

728x90
728x90