_ignored 메타데이터 필드

_ignored 메타데이터 필드

_ignored 필드는 문서의 잘못된(malformed) 데이터와 관련된 문제를 관리하는 데 도움을 줘요. 이 필드는 인덱스 매핑에서 ignore_malformed 설정이 활성화되어 있을 때, 인덱싱 과정에서 무시된 필드 이름을 인덱스하고 저장하는 데 사용돼요.

_ignored 필드를 사용하면 무시된 필드가 포함된 문서와, 무시된 정확한 필드 이름을 검색해 식별할 수 있어요. 이는 문제 해결(troubleshooting)에 유용해요. term, terms, exists 쿼리로 _ignored 필드를 쿼리할 수 있으며, 결과는 검색 히트에 포함돼요.

_ignored 필드는 인덱스 매핑에서 ignore_malformed 설정이 활성화된 경우에만 채워져요. ignore_malformed가 false(기본값)로 설정되어 있으면, 잘못된 필드는 문서 전체가 거부되는 원인이 되고 _ignored 필드는 채워지지 않아요.

출처: 문서

본문

다음 예제 요청은 _ignored 필드를 사용하는 방법을 보여줘요:

GET _search
{
  "query": {
    "exists": {
      "field": "_ignored"
    }
  }
}

_ignored 필드가 있는 인덱싱 요청 예제

다음 예제 요청들은 잘못된 값을 가진 문서를 test-ignored 인덱스에 추가한 다음, 무시된 필드가 포함된 문서를 검색해요.

먼저 length 필드에 대해 ignore_malformed를 true로 설정한 인덱스를 만들어 인덱싱 중에 오류가 발생하지 않게 해요:

PUT test-ignored
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text"
      },
      "length": {
        "type": "long",
        "ignore_malformed": true
      }
    }
  }
}

다음으로 length 값이 숫자가 아닌 문서를 인덱스해요. refresh 파라미터 덕분에 문서가 즉시 검색 가능해져요:

POST test-ignored/_doc?refresh=true
{
  "title": "correct text",
  "length": "not a number"
}

마지막으로 무시된 필드가 하나 이상 있는 문서를 검색해요:

GET test-ignored/_search
{
  "query": {
    "exists": {
      "field": "_ignored"
    }
  }
}

응답 예제

{
  "took": 42,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 1,
      "relation": "eq"
    },
    "max_score": 1,
    "hits": [
      {
        "_index": "test-ignored",
        "_id": "qcf0wZABpEYH7Rw9OT7F",
        "_score": 1,
        "_ignored": [
          "length"
        ],
        "_source": {
          "title": "correct text",
          "length": "not a number"
        }
      }
    ]
  }
}

특정 필드 무시하기

term 쿼리를 사용해 특정 필드가 무시된 문서를 찾을 수 있어요. 다음 예제 요청을 참고하세요:

GET _search
{
  "query": {
    "term": {
      "_ignored": "created_at"
    }
  }
}

응답

{
  "took": 51,
  "timed_out": false,
  "_shards": {
    "total": 45,
    "successful": 45,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 0,
      "relation": "eq"
    },
    "max_score": null,
    "hits": []
  }
}

더 알아보기 (Learn more)