This post is from a low-reputation account and contains an unverified outbound link. Be cautious before clicking external links.

[용어 사전] Elasticsearch 용어 사전

Words
465
Reading
3 min
Listen
Play
8y

엘라개념.png
elsasticsearch는 Lucene 기반의 오픈 소스 검색 엔진
실시간 검색, 분석 지원
분산 환경 지원
트랜잭션을 제공하지 않음
업데이트가 빈번하게 발생한다면 다른 NoSQL을 사용
RESTFull 기반 JSON 메시지 사용

analysis

analysis는 full text를 용어(term)로 변환하는 일련의 과정이다. 어떤 분석기(analyzer)를 사용 하는지에 따라,
FOO BAR, Foo-Bar, foo, bar 등은 foo, bar 등의 용어로 변환된다. 이런 용어(term)들은 실제 index에 저장되는 것들이다.
Full text query(term query 와 다름) FoO:bAR는 용어(term) foo, bar로 분석되고 index에 저장된다. 이런 분석 프로세스는 Elasticsearch로 하여금 full text query를 수행할 수 있게 한다. text와 term 용어도 함께 보자.

analyazer.png

역 색인

역 색인은 엘라스틱서치가 전체 문서를 찾아보지 않고도 하나의 텀(혹은 단어)을 포함하는 문서를 찾도록 해주는 구조이다.
"denver" 라는 문자열이 Document 1번과 3번에 존재하고 1번의 Document에는 빈도1, 3번의 Document에는 빈도2와 같이 기록한다.

역색인.png

cluster

한 cluster는 한개 혹은 여러개의 cluster와 같은 이름을 공유하는 node들로 이뤄져있다. 각 cluster는 cluster에 의해 자동으로 선정 된 마스터 노드를 가지고 있으며 이는 현재 마스터 노드가 실패할 경우 다른 노드로 대체될 수 있다.

node

node는 master node와 data node로 구분

  • Master node : 전체 클러스터 상태의 메타 정보를 관리
    기존의 마스터 노드가 종료되는 경우 새로운 마스터 노드가 선출됨
  • Data node : 실제 데이터가 저장되는 노드
  • Search Loadbalancer node : 검색 요청에 대한 트래픽 분산 및 그 결과를 통합하여 리턴하는 역할
  • Client node : Master node를 사용하지 않는 경우

Shard & Replica

Shard : 검색의 기본 데이터베이스가 되는 인덱스중 큰 인덱스를 여러개의 작은 인덱스로 나누어 저장하는 것
Replica : 다른 노드에 Shard와 같은 데이터를 복제하여 안정성 제공

Gateway

전체 클러스트 상태를 저장하는 저장소

Recovery

전체 클러스터가 재실행 되거나 노드, 인덱스등이 추가/삭제될 때 설정된 클러스터의 상태를 유지하기 위해 데이터를 복사하고 재배치 하는 활동

데이터 구조

데이터구조.png

index

Index는 RDB의 데이터베이스와 비슷하다. Index는 type과 field를 포함한 mapping을 가지고 있다. Index는 논리적인 Namespace(하나 혹은 여러개의 primary shard를, 또는 0 혹은 여러개의 replica shard를 맵핑하는)이다.

type

RDB의 Table과 유사하다.
rdb-elaticsearch.png

crud_http_sql.png

document

document는 엘라스틱서치에 저장된 JSON document이다. 이는 관계형 데이터베이스의 행(row)와 비슷하다. 각 document는 index에 저장되며 type과 id를 가진다. document는 0개 혹은 여러개의 field, 혹은 key-value pair를 포함하는 JSON object이다.(다른 언어에서는 hash/hashmap/associative array로 알려져 있다). 색인되어있는(indexed) 본연의 JSON document는 _source field에 저장되며, document의 검색, 슥듭(getting)이 일어날 때 기본값(default)에 의해 응답된다.

id

Document의 id는 document를 구분한다. document의 index/id는 유일해야한다. 만약 id가 제공되지 않으면 자동으로 생성된다.(routing 참조)

field

Document는 field나 key-value pair 리스트를 포함하고 있다. 값은 간단한 값(문자열, 정수, Date 등), 혹은 배열이나 object같은 집합체(structure)가 될 수 있다. Field는 관계형 데이터베이스 테이블의 열(column)과 비슷하다. 각각의 Field를 위한 mapping은 field안에 저장되어지는 데이터와 독립적인 타입(문자열, 정수, object)을 가지고 있다. Mapping은 또한 필드의 값이 어떻게 분석될것인지를 정의할 수 있게 해준다.

mapping

Mapping은 관계형 데이터베이스의 스키마(schema defintion)과 비슷하다. 각각의 Index는 mapping을 갖는다. 이는 Document가 Indexing될 때 정의될수도 있고 자동으로 생성될 수도 있다.

쿼리와 필터 비교
쿼리와필터.png

filter

스코어를 계산하지 않으므로 쿼리에 비해 월등히 빠름
결과가 메모리에 캐싱 됨
_cache 옵션을 사용하여 캐싱 여부 설정 가능
다른 필터나 쿼리, 어그리게이션 등의 처리에 사용
대부분의 옵션은 쿼리와 동일

[참고 자료]
hxxp://www.jopenbusiness.com/mediawiki/ElasticSearch