아이콘 추가
커버 추가
레이아웃 사용자 지정
섹션 2: 데이터 매핑 및 색인화
속성 추가
댓글
기본 설정 및 접속
콘솔에서 입력: ssh student@127.0.0.1 -p 2222
분석기 (Analyzer)
스키마
데이터를 어떤 타입으로 저장할지 정의 (부동 소수점, 날짜 등)
Field 관련 개념
Field Types: 필드의 데이터 타입
Field Index: 인덱싱 방식
Field Analyzer: 텍스트 분석 방법
매핑 설정
전체 텍스트 설정 여부 지정 가능
{"index":"not_analyzed"}: 전체 텍스트 검색은 하지 않고 태그 정도의 보조 기구로 사용
Field Analyzer 상세
HTML 인코딩 제거, '&' 기호를 'and'로 변환 등의 처리 가능
다양한 필터 사용 가능 (심플필터 등)
색인에 사용할 언어 지정 가능
분석기 구성요소
Character Filters
HTML 인코딩 제거, '&'를 'and'로 변환
Tokenizer
공백, 구두점, 문자가 아닌 요소로 문자열 분할
Token Filter
대소문자 변환(소문자화)
어간 추출(stemming)
동의어(synonyms) 처리
불용어(stopwords) 처리
주의: 'no'와 같이 빈번한 단어를 불용어로 설정 시 위험할 수 있음
주요 Analyzer 유형
Standard
단어 경계로 분할, 구두점 제거, 소문자화
Simple
비문자 기준으로 단어 분할, 소문자화
Whitespace
공백 기준으로 분할, 소문자화하지 않음, 구두점 보존
데이터 유형에 따라 구두점이 중요한 경우 고려
Language
특정 언어에 맞는 분석 수행
19. JSON/REST를 통해 단일 동영상 가져오기
_doc은 이전 버전 API에서 남아있는 요소
데이터 타입을 지정하지 않으면 날짜 타입 인식 불가
.profile에 홈 디렉토리의 bin 폴더가 우선순위를 가지도록 명시됨
20. Bulk API로 여러 동영상 삽입하기
data binary 옵션을 사용하면 파일에서 curl로 직접 데이터 로드 가능
21. Elasticsearch에서 데이터 업데이트
버전1과 버전2는 Elasticsearch에서 다음 정리 단계에서 삭제됨
문서는 불변이지만 _version 필드로 최근 수정사항 추적
제목은 변경하고 나머지는 모두 복사
업데이트된 제목과 새로운 버전 번호를 가진 문서의 새 복사본 생성
문서 업데이트 시 증가된 _version 번호를 가진 새 복사본 생성
24. 동시성
두 개의 다른 클라이언트가 동시에 같은 작업을 시도할 때 발생하는 문제
낙관적 동시 제어
retry_on_conflict=5 옵션으로 충돌 처리
25. 분석기 및 토크나이저 사용
전체 일치(Exact Match)
키워드 타입 사용
텍스트 유형의 매칭(Partial Match)
분석기 사용
다양한 분석기 사용 가능
접미사 제거, 어간 비교 가능
정확한 매칭이 필요한 경우
텍스트 대신 keyword 매핑 사용
예: 이메일, ID, 전화번호 등
분석된 텍스트 필드 검색 특성
관련성이 조금이라도 있는 모든 것을 반환
분석기에 따라 결과가:
대소문자 구분 없이 나오고
어간 추출되고
불용어 제거되고
동의어도 적용됨
여러 검색어가 있을 때 모든 검색어가 일치할 필요 없음
26. 데이터 모델링
Elasticsearch는 정규화 또는 비정규화 모두 가능
저장 공간 최적화에 너무 집중하지 말 것
컴퓨터 클러스터는 충분한 메모리 자원 보유
스토리지 사용을 최소화하는 것에 기반하여 최적화하지 말 것
주요 고려사항:
데이터 변경 용이성 필요 여부
두 번 조회하면서 증가된 트래픽 양 감당 가능 여부
28. 플랫 데이터 유형
flattened 데이터 타입: 객체의 필드가 키워드로 처리됨
Elasticsearch에서는 필드에 분석기와 토큰화 규칙이 적용되지 않음
매핑 폭발(mapping explosion) 문제:
맵에 너무 많은 필드가 있을 때 Elasticsearch 클러스터가 충돌하여 클러스터 자체가 다운될 수 있음
클러스터 상태가 노드 간에 전달되어 원활한 작동 유지
29. 매핑 예외 처리
매핑은 두 부분으로 구성:
JSON 문서가 인덱스에 저장되는 방식을 정의하는 프로세스
정의 프로세스에서 생성되는 실제 메타데이터 결과
매핑 유형
명시적 매핑(Explicit Mapping)
저장하고자 하는 필드와 그 유형을 추가 매개변수와 함께 정의
동적 매핑(Dynamic Mapping)
Elasticsearch가 적절한 데이터 유형을 자동으로 결정하고 매핑을 업데이트
매핑 프로세스 결과
개별 필드와 데이터 유형을 통해 무엇을 인덱싱할 수 있는지 정의
관련 매개변수를 통해 인덱싱이 어떻게 이루어지는지 정의
매핑 관련 주의사항
페이로드로 JSON 저장해도 다른 형식의 JSON 추가 시 에러 발생
엔지니어는 매핑 메커니즘 이해 필요
매핑 예외 처리 방법
로그 필드에 대한 공유 지침 설정
'데드 레터 큐 패턴'으로 실패 문서 별도 저장
애플리케이션 수준에서 처리 또는 Logstash DLQ 활용
매핑 제한사항
매핑에서 필드 수의 기본 제한: 1000
페이로드 사용 시 중첩된 필드의 수가 빠르게 증가할 수 있음
모든 매핑 개념이 중첩된 부분에도 적용됨
매핑 예외 발생 후 해결책:
객체 타입의 새로운 페이로드 필드 도입으로 JSON을 원하는 대로 저장 가능
출처