-
05. 매핑 APIBackEnd/elasticsearch 2021. 9. 19. 21:20반응형
1. 매핑 인덱스 생성
2. 매핑 확인
이미 만들어진 매핑을 확인하려면 엘라스틱서치에서 제공하는 _mapping API를 사용할 수 있습니다.
3. 매핑 파라미터
옵션 설명 analyzer 해당 필드의 데이터를 형태소 분석하겠다는 의미의 파라미터다. text 데이터 타입의 필드는 analyzer 매핑 파라미터를 기본적으로 사용해야 한다. (default : Standard Analyzer) normalizer term query 분석기를 사용하기 위해 사용된다. asciifolding과 같은 필터를 사용하면 cafe, Cafe, Cafe' 등 같은 데이터로 인식되게 할 수 있다. boost 필드에 가중치(Weight)를 부여한다. 가중치에 따라 유사도 점수(_score)가 달라지기 때문에 boost 설정 시 검색 결과의 노출 순서에 영향을 준다. 만약 색인 시점에 설정하면 재색인하지 않는 이상 가중치 변경을 할 수 없기에 주의해서 사용해야 한다.
(참고) 최신 엘라스틱서치는 색인 시 boost 설정을 할 수 없도록 바뀌었다.coerce 색인 시 자동 변환을 허용할지 여부를 설정하는 파라미터다.
예) "10"과 같은 숫자 형태의 문자열을 integer 타입으로 형변환한다.copy_to 매핑 파라미터를 추가한 필드의 값을 지정한 필드로 복사한다. 또한 여러 개의 필드 데이터를 하나의 필드에 모아서 전체 검색 용도로 사용하기도 한다. (과거 _all 칼럼과 동일한 기능 제공) fielddata 엘라스틱서치가 힙 공간에 생성하는 메모리 캐시다. 최신 버전의 엘라스틱서치는 doc_values라는 새로운 형태의 캐시를 제공하고 있으며, text 타입의 필드를 제외한 모든 필드는 기본적으로 doc_values 캐시를 사용한다. fielddata는 메모리에 생성되는 캐시이기 때문에 최소한으로만 사용해야 한다는 사실에 주의해야 한다. doc_values 엘라스틱서치에서 사용하는 기본 캐시다. 힙 사용에 대한 부담을 없애고 운영체제의 파일 시스템 캐시를 통해 디스크에 있는 데이터에 빠르게 접근할 수 있다.
필드를 정렬, 집계할 필요가 없고 스크립트에서 필드 값에 액세스할 필요가 없다면 디스크 공간을 절약하기 위해 doc_values를 비활성화할 수도 있다. 한 번 비활성화된 필드는 인덱스를 재색인하지 않는 한 변경이 불가능하다.dynamic 매핑에 필드를 추가할 때 동적으로 생성할지, 않을지를 결정한다.
1) true : 새로 추가되는 필드를 매핑에 추가한다.
2) false : 새로 추가되는 필드를 무시한다. 해당 필드는 검색할 수 없지만 _source에는 표시된다.
3) strict : 새로운 필드가 감지되면 예외가 발생하고 문서 자체가 색인되지 않는다.enabled 검색 결과에는 포함하지만 색인은 하고 싶지 않은 경우도 있다. 메타 성격의 데이터가 그렇다. format 날짜/시간을 문자열로 표시한다.
1) basic_date : yyyyMMdd
2) basic_date_time : yyyyMMdd'T'
HHmmss.SSSZ
3) basic_time : HHmmss.SSS
4) date/strict_date : yyyy-MM-dd
5) date_hour_minute_second/ : yyyy-MM-dd'T'
strict_date_hour_minute_second HH:mm:ss.
6) date_hour_minute_second_millis/ : yyyy-MM-dd'T'
strict_date_hour_minute_second_millis HH:mm:ss.SSS.
7) date_time/strict_date_time : yyyy-MM-dd'T'
HH:mm:ss.SSSZZignore_above 필드에 저장되는 문자열이 지정한 크기를 넘어서면 빈 값으로 색인한다. ignore_malformed 엘라스틱서치에서는 잘못된 데이터 타입을 색인하려고 하면 예외가 발생하고 해당 문서 전체가 색인되지 않는다. 이 매핑 파라미터를 사용하면 해당 필드만 무시하고 문서는 색인할 수 있다. index 필드값을 색인할지 결정한다. (default : true) fields 다중 필드(multi_field)를 설정할 수 있는 옵션이다. 필드 안에 또 다른 필드의 정보를 추가할 수 있어 같은 string 값을 각각 다른 분석기로 처리하도록 설정할 수 있다. norms 문서의 _score 값 계산에 필요한 정규화 인수를 사용할지 여부를 설정한다. (default : true) null_value null_value 설정 시 문서의 값이 null이더라도 필드를 생성하고 그에 해당하는 값으로 저장한다. position_increment_gap 배열(Array) 형태의 데이터를 색인할 때 검색의 정확도를 높이기 위해 제공하는 옵션이다. 필드 데이터 중 단어와 단어 사이의 간격(slop)을 허용할지를 설정한다. properties 오브젝트(Object) 타입이나 중첩(Nested) 타입의 스키마를 정의할 때 사용되는 옵션으로 필드의 타입을 매핑한다. 오브젝트 필드 및 중첩필드에는 properties라는 서브 필드가 있다. search_analyzer 검색 시 사용할 분석기를 별도로 지정한다.
(일반적으로 색인과 검색 시 같은 분석기를 사용한다.)similarity 유사도 측정 알고리즘을 지정한다. (default : BM25) store 필드에 값을 저장해 검색 결과에 값을 포함하기 위한 매핑 파라미터다. term_vector 루씬에서 분석된 용어의 정보를 포함할지 여부를 결정하는 매핑 파라미터다.
1) no : 텀벡터를 저장하지 않는다.
2) yes : 필드와 용어만 저장한다.
3) with_positions : 용어, 용어의 시작과 끝 위치를 저장한다.
4) with_offsets : 용어, 문자 오프셋을 저장한다.
5) with_positions_offsets : 용어, 용어의 시작과 끝 위치, 문자 오프셋을 모두 저장한다.반응형'BackEnd > elasticsearch' 카테고리의 다른 글
07. 데이터 타입(Data Type) (0) 2021.09.20 06. 메타 필드(Meta Fields) (0) 2021.09.19 04. 용어 (0) 2021.09.19 03. 키바나 설치(kibana) (0) 2021.09.18 02. 엘라스틱서치 설치 (0) 2021.09.18