Skip to content

Latest commit

 

History

History
60 lines (52 loc) · 3.08 KB

3장_엘라스틱서치_기본.md

File metadata and controls

60 lines (52 loc) · 3.08 KB

인덱스와 도큐먼트

  • 인덱스: 도큐먼트를 저장하는 논리적 구분자
  • 도큐먼트: 실제 데이터를 저장하는 단위
  • 클러스터----(n)인덱스----(n)도큐먼트----(n)필드
MySQL 엘라스틱서치
테이블 인덱스
레코드 도큐먼트
컬럼 필드
스키마 매핑
  • 동일한 인덱스에 있는 도큐먼트는 동일한 스키마
  • 도큐먼트는 반드시 하나의 인덱스에 포함되어야 함
  • 도큐먼트 수정, 삭제는 비용이 많이 든다

벌크 데이터

  • bulk API는 읽기는 지원하지 않음(생성,삭제,수정만 지원)
  • ndjson 형식을 사용(라인이나 쉼표 주의, json과 문법 다름 -> json 형태로 포맷팅하면 작동하지 않음)

매핑

  • 다이나믹 매팽
  • 명시적 매핑
  • 저장할 데이터를 확실히 안다면 명시적 매핑이 좋음
  • 이미 정의된 필드를 수정하거나 삭제할 수 없음(주의할 것!)
  • 새로운 필드 추가는 가능
  • text: 텍스트를 작은 단위로 분리
  • keyword: 정렬이나 집계에 사용. 원문을 통째로 인덱싱 (enum처럼 많지 않은 값이 반복되어 사용되는듯 싶다)
  • 멀티필드 지원하여 text, keyword 타입 둘 다로 설정 가능

텍스트 타입

  • 문장이나 여러 단어가 나열된 문자열에 주로 사용
  • 분석기에 의해 토큰으로 분리되고, 토큰이 인덱싱 됨 => 역인덱싱
  • 역인덱스에 저장된 토큰 == 용어
  • 문장의 첫 문자열이 아닌 분해된 용어를 기준으로 정렬함

키워드 타입

  • 유의미한 값들의 집합, 범주형 데이터에 주로 사용
  • 부분 일치 검색은 어렵지만 완전 일치 검색에 사용
  • 집계나 정렬
  • 용어 분리할 필요가 없음

인덱스 템플릿

  • 파티셔닝 되는 인덱스들은 설정이 같아야 함
  • 템플릿을 만들기 전에 이미 존재하던 인덱스는 템플릿 적용되지 않음
  • 삭제도 템플릿이 삭제되는 것일 뿐 기존 데이터가 삭제되진 않음
  • 우선순위가 높은 템플릿으로 덮어쓰기 됨(priority 숫자의 크기가 클수록 높은 우선순위, 7.8이상버전부터 지원)
  • 다이나믹 템플릿도 있음

분석기

  • 분석기 = [ 캐릭터 필터(n) ---> 토크나이저 ---> 토큰 필터(n) ]
  • 하나의 토크나이저가 필수로 포함되어야 함
  • 캐릭터 필터, 토큰 필터는 옵셔널
  • 토큰: 분석기 내부에서 일시적으로 존재하는 상태. 잘린 단위
  • 용어(term): 인덱싱 되어 있는 단위. 검색에 사용되는 단위. 인덱스에 저장되는 상태의 토큰들
  • 캐릭터 필터: 문자열을 변경하거나 제거. 전처리 역할. 엘라스틱서치가 제공하는 대부분에 분석기에는 캐릭터 필터가 불포함
  • 토크나이저: 토큰으로 분리
  • 토큰 필터: 분리된 토큰의 필터작업(대소문자 구분, 형태소 분석 등). 배열의 첫번째 순서부터 적용되므로 순서가 중요
  • 분석기 종류: standard, simple, whitespace, stop 등등..
  • 커스텀 분석기 사용 가능