[230418] Elastic Stack 1일차 리뷰 내용

뜨개발자·2023년 4월 19일
0

TIL

목록 보기
60/74

Elastic Search는 검색, 분석을 위한 엔진

기본 개념

맨 꼭대기에 있는 cluster, 그 아래로 각 실행흐름인 node, 그 아래 RDB의 테이블과 비슷한 개념으로 생각할 수 있는 index가 존재

클러스터는 여러 개가 존재할 수 있으며, 각 클러스터가 논리적으로 분리됨
클러스터끼리 데이터를 주고 받는 식으로 통신이 가능

클러스터 아래에 노드는 여러 개가 달려있을 수 있음
노드는 하나의 Instance라고 부름

노드 아래에 존재하는 개념인 인덱스는 테이블과 유사하다고 볼 수 있음
DB에는 Insert를 한다면, Index에는 Indexing을 함
DB의 row는 Index의 document

엘라스틱의 데이터 구분

Static data
  • 증량은 적고, 그에 비해 업데이트가 잦은 데이터
  • 코드성 테이블
  • 정형화된 데이터에 적합
Time series data
  • 업데이트는 거의 없지만, 증량이 빠른 데이터
  • log와 같이 insert가 계속 되는 것

Query option

  • Lucene(루씬)
    Elastic Search의 기반이 되는 검색 엔진
  • Query DSL
    Elastick Search에서 가장 유연하게 사용할 수 있는 query

Keyword vs text

Text

  • 인덱싱이 발생하는, 필드의 데이터 타입
  • 원본 문자열을 가공하기 때문에 검색이 필요한 경우 적합

Keyword

  • 인덱싱이 발생하지 않는 원본 문자열
  • aggregation을 위해 사용하는 경우가 많음

mapping

RDB에서 테이블을 정의하는 것과 같은 동작
mapping은 index를 정의함 = index의 스키마를 정하는 것이 mapping

dynamic templates

정의되지 않은 필드에 document를 인덱싱하려고 하면 Elastic Search는 동적으로 매핑을 진행해줌 (그다지 권장되지는 않음)
이 때, 동적으로 매핑이 발생하더라도 그에 대한 어느 정도의 기반을 마련해 주는 것이 dynamic templates
정의하지 않아도 dynamic mapping은 발생하지만, 정의된 틀에 맞는 경우에는 어느 정도 대비할 수 있게 됨

Score

  • score : 조건에 맞는 결과들에 점수를 매겨 유사도 혹은 유용도를 수치화한 것
  • Elastic Search는 default로 BM25 알고리즘을 사용하여 score를 매김
  • score의 3요소
    • TF(term frequency)
      • 검색한 단어가 나타나는 빈도가 높다면 점수를 높게 계산
      • 하나의 문서 내에서 적용하는 규칙
    • IDF(inverse document frequency)
      • 검색한 단어가 나타나는 빈도가 높다면 점수를 낮게 계산
      • 여러 개의 문서에 대해서 적용하는 규칙
    • field length
      • 더 짧은 필드에 대해 더 높은 점수를 부여
profile
뜨개질하는 개발자

0개의 댓글