[DB] Elasticsearch란?(1)

홍승보·2022년 8월 8일
0

DB

목록 보기
1/2

Elasticsearch란?

  • 검색 처리에 특화된 오픈 소스 소프트웨어이다.
  • Java로 작성되었으며 Java로 작성된 검색 엔진 라이브러리인 Apache Lucene이 기반을 둠.
  • 데이터를 저장할 수 있으므로 DB로 사용되기도 함.

기초 용어

  • 문서 : Elasticsearch의 데이터 단위이고, JSON형식으로 표현된다.
  • 필드: 문서내의 key, value의 조합이다.
  • 인덱스 : 문서를 저장하는 영역이다. RDBTable에 해당한다.

문서 예

{ 
  "name": "Beats", 
  "age" : 26, 
  "birthday": "1994-10-29",
  "blog_url": "https://beatsbeats.hatenablog.com/",
  "job": ["monk","developer"], 
  "favorite_song": {"title":"fav_song","created_at":"2000-01-01"}
} 
  • 노드 : Elasticsearch가 실행되는 서버이다.
  • 클러스터 : 여러 노드로 구성된 노드 그룹이다.

  • 샤드 : 때로는 인덱스를 분할하여 저장할 수도 있다.
    각 인덱스에 대한 샤드의 수는 인덱스 작성시에 지정해둘 필요가 있다.

특징 : 분산 구성 기능


작성한 데이터는 Shard단위로 여러 노드에 분산되어 배치된다.
이렇게 하면 병렬 처리로 검색이 수행되고 검색 성능이 향상된다.
또한 각 샤드에 대해 복제본을 만들 수 있으며 데이터 가용성을 높일 수 있다.

  • REST API
    REST API에 의한 덱세스가 가능하고, 자원을 URL로 지정해 조작내용을 HTTP Method로 지정해 CRUD처리를 실시할 수 있다.
    문서의 취득 갱신, 클러스터의 관리등이 API에 의해 조작이 가능하고, 따라서 외부 시스템과의 연계도 취하기 쉽다.
  • 스키마 정의 필요 없음
    작성할 문서의 스키마 정의가 필요하지 않다. 새로 인덱스를 작성시에 데이터 값에서 자동으로 스키마를 생성한다. 또한 일시적으로 스키마를 정의할 수 있다.
profile
Junior BE Developer

0개의 댓글