Ignore above 매핑 파라미터
Ignore above 매핑 파라미터
ignore_above 매핑 파라미터는 인덱싱되는 문자열의 최대 문자 수를 제한해요. 문자열 길이가 지정한 임계값을 초과하면 그 값은 문서와 함께 저장되지만 인덱싱되지는 않아요.
출처: 문서
본문
ignore_above 매핑 파라미터는 인덱싱되는 문자열의 최대 문자 수를 제한합니다. 문자열의 길이가 지정한 임계값을 초과하면 그 값은 문서와 함께 저장되지만 인덱싱되지 않습니다. 이는 비정상적으로 긴 값으로 인덱스가 비대해지는 것을 방지하고 효율적인 쿼리를 보장하는 데 도움이 됩니다.
기본적으로 ignore_above를 지정하지 않으면 모든 문자열 값이 완전히 인덱싱됩니다.
예제: ignore_above 없이
ignore_above 파라미터를 지정하지 않고 keyword 필드를 사용해 인덱스를 만듭니다.
PUT /test-no-ignore
{
"mappings": {
"properties": {
"sentence": {
"type": "keyword"
}
}
}
}
긴 문자열 값을 가진 문서를 인덱싱합니다.
PUT /test-no-ignore/_doc/1
{
"sentence": "text longer than 10 characters"
}
전체 문자열에 대한 term 쿼리를 실행합니다.
POST /test-no-ignore/_search
{
"query": {
"term": {
"sentence": "text longer than 10 characters"
}
}
}
sentence 필드가 인덱싱되었으므로 문서가 반환됩니다.
{
...
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": 0.13353139,
"hits": [
{
"_index": "test-no-ignore",
"_id": "1",
"_score": 0.13353139,
"_source": {
"sentence": "text longer than 10 characters"
}
}
]
}
}
예제: ignore_above 사용
같은 필드에 ignore_above 파라미터를 10으로 설정해 인덱스를 만듭니다.
PUT /test-ignore
{
"mappings": {
"properties": {
"sentence": {
"type": "keyword",
"ignore_above": 10
}
}
}
}
긴 문자열 값을 가진 같은 문서를 인덱싱합니다.
PUT /test-ignore/_doc/1
{
"sentence": "text longer than 10 characters"
}
전체 문자열에 대한 term 쿼리를 실행합니다.
POST /test-ignore/_search
{
"query": {
"term": {
"sentence": "text longer than 10 characters"
}
}
}
sentence 필드의 문자열이 ignore_above 임계값을 초과해 인덱싱되지 않았으므로 결과가 반환되지 않습니다.
{
"took": 3,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 0,
"relation": "eq"
},
"max_score": null,
"hits": []
}
}
하지만 문서는 여전히 존재하며, 다음 요청으로 확인할 수 있습니다.
GET test-ignore/_search
반환된 hits에는 문서가 포함됩니다.
{
...
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": 1,
"hits": [
{
"_index": "test-ignore",
"_id": "1",
"_score": 1,
"_source": {
"sentence": "text longer than 10 characters"
}
}
]
}
}