엘라스틱 서치에서 Text 필드를 정렬 하려고 하면
Set fielddata=true on ' ' in order to load fielddata in memory by uninverting the inverted index.
와 같은 에러가 발생을 한다.
대부분의 필드 들은 doc_values 를 인덱스 로 사용하지만,
text 필드는 doc_values 를 지원하지 않고 fielddata라는 인 메모리 구조의 쿼리 타임을 사용한다고 한다.
이 field data는 디스크의 세그먼트의 역 색인을 읽어 결과를 JVM 힙 메모리에 저장을 하는데
이 비용이 굉장히 커서 기본적으로 false 로 되어있다.
따라서 text 필드로는 정렬을 하기 힘든데,
이 부분을 해결하기 위해선
Multifield 를 사용 하면 된다.
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
}
}
맵핑 타입을 보면 텍스트는 이중으로 Keyword 타입을 가지고 있는데,
해당 키워드는 정렬이 가능한 데이터 타입이다.
따라서 정렬을 할땐 Text 필드가 가지고 있는 Keyword 타입으로 정렬을 시키면 된다.
'데이터처리 > elasticSearch' 카테고리의 다른 글
elasticsearch 성능 극대화 (0) | 2021.08.30 |
---|---|
elasticsearch 데이터 검색 & 분석 (0) | 2021.08.30 |
elasticsearch 소개 (0) | 2021.08.27 |
[elasticSearch] 엘라스틱서치 기본 개념 (0) | 2020.06.01 |
[reference] 엘라스틱서치 - inrtoduction (0) | 2020.05.30 |