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"
        }
      }
    ]
  }
}

더 알아보기 (Learn more)