ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 엘라스틱서치 text, keyword 타입
    공부하기/엘라스틱서치 2024. 2. 12. 22:43

    text, keyword 두 타입 모두 문자열 자료형을 담는 타입이다.

    두 타입은 정렬과 집계, 스크립트 작업을 수행할 때 동작의 차이가 있다 -> keyword 타입 우세

     


    사전지식

     

    - 역색인 ( inverted index )

    -> "나는 최고다" = "나는", "최고다" 와 같이 공백 문자로 문자열을 잘랐을 때 각각의 문자열을 토큰이라고 한다.

    -> 문자열을 토큰으로 나누는 과정을 토크나이징이라고 한다.

    -> 이렇게 토크나이징된 결과를 저장하는 결과가 역색인이다.

     

    - 애널라이저

    -> 0개 이상의 character filter, 1개의 tokenzier, 0개 이상의 token filter로 구성된다.

    -> 역색인을 만들어내기 위해서 필요한 토큰(token)을 생성하는 과정에서 동작

     

     

    - 노멀라이저

    -> keyword 타입 필드

    -> 애널라이저와 다르게 단일 토큰을 생성한다.

     


    text 

    • 애널라이저가 적용된 후 색인된다.
      • standard 애널라이저 외 다른 애널라이저를 지정할 수 있다.
      • custom 애널라이저를 사용하여 다양한 방법으로 텍스트를 분석해 색인할 수 있다.
    • 들어온 문자열을 가지고 그대로 역색인을 구성하는 것이 아니라 값을 분석하여 여러 토큰으로 쪼갠다.
    • 여러개로 쪼개진 토큰을 통해 역색인을 구성한다.
    • 쪼개진 토큰에 후처리 작업 후 최족적으로 역색인에 들어가는 형태를 term이라고 한다.
    • mysql 텍스트 검색할 때 like와 비슷하다고 느꼇다
    • 전문 검색에 적합
    • fielddata 캐시 사용
      • 기본값은 false이다.
      • 역색인 전체를 읽어들여 힙메모리에 올리기 때문에 문제를 발생시킬 수 있다.
      • 이미 분석된 term을 이용해 집계 등을 수행하기 때문에 의도와 다른 결과가 나올 수 있다.
      • text, annotated_text만 사용

     

    keyword

    • 들어온 문자열 값을 쪼개지 않고 역색인을 구성
    • 노멀라이저 적용
    • 간단한 전처리만 거친 뒤 커다란 단일 텀으로 역색인을 구성
    • mysql 텍스트 검색할 때 = 과 비슷하다고 느꼇다
    • 일치 검색에 적합
    • doc_values 캐시 사용
      • 기본값 true이다.
      • PUT 인덱스이름/_mapping { "properties": { "필드이름": { "doc_values": false }}}를 통해 캐시를 끌 수 있음
      • 디스크 기반이며 파일 시스템 캐시를 사용
      • text, annotated_text 를 제외한 거의 모든 타입에서 사용
Designed by Tistory.