개발

Elasticsearch #1

동고킴 2020. 6. 7. 17:43
반응형

주요 용어

  • 색인(indexing) : 데이터가 검색될 수 있는 구조로 변경하기 위해 원본 문서를 검색어 토큰들로 변환하여 저장하는 일련의 과정
  • 인덱스(index, indices) : 색인 과정을 거친 결과물 또는 색인된 데이터가 저장되는 저장소
  • 도큐먼트(document) : 단일 데이터 단위
  • 검색(search) : 인덱스에 들어있는 검색어 코튼들을 포함하고 있는 문서를 찾아가는 과정
  • 질의(Query) : 사용자가 원하는 문서를 찾거나 집계 결과를 출력하기 위해 검색 시 입력하는 검색어 또는 검색 조건
  • 샤드(Shards) : 인덱스를 쪼게는 단위
  • 매핑(Mapping) : 도큐먼트 내부 데이터명. RDB의 칼럼 개념
  • 디스커버리(Discovery) : 노드가 처음 실행 될 때 같은 서버 또는 임의로 설정된 네트워크 상의 다른 노드들을 찾아 하나의 클러스터로 바인딩하는 과정

엘라스틱처치는

  • Apach Lucene 기반 (Written in Java)
  • 자바로 개발되어있 때문에 자바 실행이 가능한 환경이라면 어디서든 구동이 가능
  • inverted index 구조로 데이터 저장
    • RDBMS와 반대 구조
    • 텍스트를 파싱해서 검색어 사전을 만든 다음에 inverted index 방식으로 텍스트를 저장
  • 텍스트 처리과정
    1) 대소문자 변환
    2) 토큰 재정렬(보통 ascii 순서로)
    3) 불용어(stopwords, 검색어로서의 가치가 없는 단어들) 제거. a, an, be, the, to 등
    4) 토큰 병합 (e.g. jumping, jumps가 jump로 병합)
    5) 동의어 처리 (e.g. fast 7 quick)
  • 검색 과정
    • 검색어도 동일하게 텍스트 처리를 하여 검색
  • 일반적으로 맵리듀스 처리 방법을 이용해 액션을 수행한다.
  • 엘라스틱서치 노드에는 두 가지 중요한 노드가 있다.
    • Data Node
      • 데이터를 저장하며 색인된 도큐먼트를 저장한 색인 샤드를 포함한다.
    • Non-data Node (결정권자)
      • Rest 응답을 비롯한 그 밖의 모든 검색 작업을 처리
      • 일반적으로 엘라스틱서치는 맵리듀스 처리 방법을 이용하여 액션을 처리한다.
      • 기본 샤드에 액션을 분산하고, 최종 응답을 보낼 수 있도록 샤드 결과 수집/집계(리듀스)를 책임진다.
      • 패싯(facet), 집계, 캐싱 같은 작업을 하기 위해 많은 양의 RAM을 사용할 수 있다.

Protocol

엘라스틱서치는 여러 프로토콜을 제공한다. 애플리케이션의 용도에 따라 적당한 프로토콜을 사용한다.

1) HTTP
- 타입 : 텍스트
- 장점 : 자주 사용되며 ES 버전간 호환성
- 단점 : HTTP 오버헤드
2) Native
- 주로 노드 간의 저수준 통신에 쓰인다. 큰 데이터 블록을 빠르게 가져올 때 유용
- 타입 : 바이너리
- 장점 : 빠른 네트워크 계층. 대규모 색인 작업에 최적
- 단점 : ES 버전간 호환 X
3) Thrift
- 타입 : 바이너리
- 장점 : 쓰리프트 플러그인에 따름
- 단점 : 바이너리

반응형

'개발' 카테고리의 다른 글

Elasticsearch #3  (0) 2020.06.07
Elasticsearch #2  (0) 2020.06.07
리눅스 포트 확인  (0) 2020.06.06
유니온파인드  (0) 2019.07.20
[기하] 회전하는 캘리퍼스 (Rotating calipers)  (0) 2019.07.20