Index prefixes 매핑 파라미터
Index prefixes 매핑 파라미터
index_prefixes 매핑 파라미터는 text 필드의 용어 시작 세그먼트에 대한 추가 인덱스 항목을 생성하도록 엔진에 지시해요. 활성화하면 구성 가능한 최소/최대 문자 길이에 기반한 접두어 인덱스를 구축해 자동 완성 같은 접두어 쿼리 성능을 크게 개선해요.
출처: 문서
본문
index_prefixes 매핑 파라미터는 text 필드의 용어 시작 세그먼트에 대한 추가 인덱스 항목을 생성하도록 엔진에 지시합니다. 활성화하면 구성 가능한 최소 및 최대 문자 길이에 기반한 접두어 인덱스를 구축합니다. 이는 자동 완성이나 search-as-you-type 같은 접두어 쿼리의 성능을 크게 개선하여, 이러한 쿼리가 사전 인덱싱된 용어 접두어와 빠르게 매칭되게 합니다.
기본적으로 접두어 인덱싱은 수행되지 않아 최소한의 인덱스 크기와 빠른 인덱싱 연산을 유지합니다. 그러나 애플리케이션이 빠른 접두어 매칭의 이점을 얻는다면 이 파라미터를 활성화해 쿼리 효율성을 크게 향상시킬 수 있습니다.
Index prefixes 구성
index_prefixes 매핑 파라미터에 다음 구성 파라미터를 전달할 수 있습니다.
min_chars: 인덱싱해야 하는 접두어의 최소 길이입니다. 최솟값은 0, 기본값은 2입니다.max_chars: 인덱싱해야 하는 접두어의 최대 길이입니다. 최댓값은 20, 기본값은 5입니다.
필드에서 index prefixes 활성화
다음 요청은 name 필드가 길이 2에서 10 문자 사이의 접두어 인덱스를 구축하도록 구성된 products라는 인덱스를 만듭니다.
PUT /products
{
"mappings": {
"properties": {
"name": {
"type": "text",
"index_prefixes": {
"min_chars": 2,
"max_chars": 10
}
}
}
}
}
다음 요청을 사용해 문서를 인덱싱합니다.
PUT /products/_doc/1
{
"name": "Ultra HD Television"
}
다음 검색 요청은 name 필드가 ul로 시작하는 문서를 검색하는 접두어 쿼리를 보여 줍니다.
POST /products/_search
{
"query": {
"prefix": {
"name": "ul"
}
}
}
응답에는 매칭되는 문서가 포함됩니다.
{
...
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": 1,
"hits": [
{
"_index": "products",
"_id": "1",
"_score": 1,
"_source": {
"name": "Ultra HD Television"
}
}
]
}
}
index prefixes와 함께 기본 파라미터 사용
다음 요청은 기본 파라미터로 index_prefixes를 사용하는 products_default라는 인덱스를 만듭니다.
PUT /products_default
{
"mappings": {
"properties": {
"name": {
"type": "text",
"index_prefixes": {}
}
}
}
}