Elasticsearch

yshjft·2022년 9월 6일
0

데이터베이스 

목록 보기
5/10

Elasticsearch란?

자바 기반 오픈소스 검색 엔진

Elasticsearch의 데이터 색인

원본 데이터 → 색인 → 인덱스

색인(indexing)

원본 문서를 변환하여 저장하는 과정

인덱스(index, indices)

  • 색인 과정을 거친 결과물
  • 색인된 데이터가 저장되는 저장소

샤드(shard)

  • 인덱스는 샤드(shard)라는 단위로 분리되고 각 노드에 분산되어 저장된다.
  • 프라이머리 샤드 & 레플리카 샤드
    • 노드에 문제가 발생하여 샤드를 손실하였을 경우 복구를 위하여 프라이머리 샤드와 레플리카 샤드는 서로 다른 노드에 저장된다.
    • 프라이머리 샤드가 손실된 경우 레플리카 샤드가 프라이머리 샤드로 승격되고 새로 레플리카 샤드를 만들게 된다.

(참고) 노드

  • 마스터 노드
    • 인덱스의 메타 데이터, 샤드의 위치와 같은 상태 정보 관리
    • SPOF 위험성이 있으므로 백업용 마스터 노드를 준비하여 이를 해결할 수 있다.
  • 데이터 노드
    • 실제로 색인된 데이터를 저장

Elasticsearch 검색 정확도(relavancy) 평가 방법

  • Elasticsearch에서는 BM25라는 알고리즘을 이용하여 정확도를 평가한다.
  • BM25 알고리즘에 중요한 요소는 TF, IDF, FL이다.
    • TF(Term Frequency)
      • document에 검색된 term이 많을 수록 점수가 높아진다.
    • IDF(Inverse Document Frequency)
      • 검색한 term을 포함하고 있는 document 개수가 많을수록 해당 term에 대한 점수 낮아진다.
      • ex) quick이 들어간 문서 3개, dog가 들어간 문서 4개 → quick이 들어간 경우 더 높은 점수를 가지게 된다.
    • FL(Field Length)
      • document에서 term이 필드 길이가 큰 필드 보다 짧은 필드에 있는 경우 더 높은 점수를 받게된다.

Elasticsearch의 역인덱스(inverted-index)

  • 역인덱스 덕분에 빠른 검색 가능하다.
  • 역인덱스
    * 특정 단어가 출현하는 doc을 저장한 형태

(참고) Elasticsearch의 텍스트 분석

  • 애널라이저
    • 텍스트 분석을 처리하는 기능을 의미하며 애널라이저는 캐릭터 필터, 토크나이저, 토큰 필터로 이루어져 있다.
    • 사용자 정의 애널라이저를 만들 수 있다.
    • 캐릭터 필터(character filter)
      • 0 ~ 3개
      • 특정 문자 대치 및 제거
        • 특수 문자 대치
    • 토크나이저(tokenizer)
      • 반드시 1개
      • document들을 term으로 분리
    • 토큰 필터(token filter)
      • 0 ~ n개
      • 설정된 규칙에 따라 분리된 term들을 처리
        • 대문자 변환, 소문자 변환
        • 불용어 제거
        • 문법상 변형된 단어를 기본 형태로 변환

Elastic Search의 키워드 검색과 RDBMS의 LIKE 검색의 차이

  • Elasticsearch의 키워드 검색은 알고리즘을 통해서 가장 유사한 순서대로 결과를 나타낸다.
  • RDBMS에서의 LIKE 검색은 와일드카드로 시작하지 않는 경우에만 인덱스를 사용하고 나머지 경우는 전체를 탐색하기 때문에 상대적으로 느리다.
profile
꾸준히 나아가자 🐢

0개의 댓글