_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": []
}
}