ELK/Elasticsearch

[Elasticsearch] Elasticsearch란?

박만자 2022. 7. 26. 13:51

Elasticsearch

Elasticsearch 아파치 루씬(Apache Lucene)기반의 오픈 소스 분산 검색 엔진입니다. Elasticsearch는 NoSQL 기반의 문서 지향 데이터베이스로 JSON 형식의 데이터를 저장하고 검색(Query DSL)할 수 있으며, 비정형 데이터를 색인하고 검색하는 것이 가능하고, 데이터를 기반으로 분석 작업을 진행할 수도 있습니다.

Logstash나 API를 사용해 Elasticsearch로 데이터를 전송하고, Kibana와 함께 사용해 데이터를 시각화하여 대시보드를 구축할 수 있습니다.

 

Elasticsearch 특징

  • 준 실시간 검색 엔진
    • 실시간이라고 느껴질 만큼 색인된 데이터가 빠르게 검색된다.
    • 내부적으로 복잡한 과정을 거치기 때문에 완전 실시간은 아니다.
  • REST API
    • RESTful한 인터페이스를 제공하여 운영체제, 시스템에 관계없이 다양한 플랫폼에서 활용이 가능하다.
    • 요청/응답에 JSON 형식의 데이터를 사용한다.
  • 전문 검색
    • 내용 전체를 색인해서 특정 단어가 포함된 문서를 검색할 수 있다.
  • 통계 분석
    • 로그 데이터를 수집하여 통계 분석에 활용할 수 있다.
    • Kibana를 연결하면 실시간으로 로그를 분석하고 시각화할 수 있다.
  • Schemaless
    • 입력될 데이터에 대해 미리 정의하지 않아도 동적으로 스키마를 생성할 수 있다.
  • Multi-tenancy
    • 검색할 필드명으로 여러 인덱스를 한번에 조회할 수 있다.
  • 확장성
    • 한대 이상의 노드를 클러스터로 구성하여 높은 안정성을 이루고 부하를 분산할 수 있다.
    • 분산 환경에서 데이터는 샤드(shard)라는 단위로 나눈다.
  • 역색인
    • 특정 단어를 찾을때 단어가 포함된 특정 문서의 위치를 알아내어 빠르게 결과를 찾아낼 수 있다.
  • Document-Oriented
    • 여러 계층 구조의 문서로 저장이 가능하며, 계층 구조로된 문서도 한번의 쿼리로 쉽게 조회할 수 있다.

 

Elasticsearch 단점

  • 전체적인 클러스터 성능 향상을 위해 비용 소모가 큰 롤백과 트랜잭션 기능이 없다.
  • 문서(데이터)를 수정(Update)하지 않는다. 기존 문서를 삭제(Delete)하고 다시 삽입(Insert)한다.

Elasticsearch vs SQL

https://www.elastic.co/guide/en/elasticsearch/reference/current/_mapping_concepts_across_sql_and_elasticsearch.html

 

Mapping concepts across SQL and Elasticsearch | Elasticsearch Guide [8.3] | Elastic

Mapping concepts across SQL and Elasticsearchedit While SQL and Elasticsearch have different terms for the way the data is organized (and different semantics), essentially their purpose is the same. So let’s start from the bottom; these roughly are: SQL

www.elastic.co

Elasticsearch RDBMS
field column
document row
index table
implicit schema
cluster instance catalog or database

 

참고