_id 메타데이터 필드
_id 메타데이터 필드
OpenSearch의 각 문서는 고유한 _id 필드를 가져요. 이 필드는 인덱스되어 있어서 GET API 또는 ids 쿼리로 문서를 검색할 수 있어요. _id 값을 제공하지 않으면 OpenSearch가 문서에 대한 ID를 자동으로 생성해요.
다음 예제 요청들은 test-index1이라는 인덱스를 만들고 서로 다른 _id 값을 가진 두 문서를 추가해요.
첫 번째 요청은 _id가 1인 문서를 추가해요:
PUT test-index1/_doc/1
{
"text": "Document with ID 1"
}
두 번째 요청은 _id가 2인 문서를 추가하고 인덱스를 새로고침(refresh)해서 두 문서가 즉시 검색 가능하게 해요:
PUT test-index1/_doc/2?refresh=true
{
"text": "Document with ID 2"
}
그런 다음 다음 예제 요청처럼 _id 필드를 사용해 문서를 쿼리할 수 있어요:
GET test-index1/_search
{
"query": {
"terms": {
"_id": ["1", "2"]
}
}
}
응답은 _id가 1과 2인 두 문서를 모두 반환해요:
{
"took": 10,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 2,
"relation": "eq"
},
"max_score": 1,
"hits": [
{
"_index": "test-index1",
"_id": "1",
"_score": 1,
"_source": {
"text": "Document with ID 1"
}
},
{
"_index": "test-index1",
"_id": "2",
"_score": 1,
"_source": {
"text": "Document with ID 2"
}
}
]
}
}
출처: 문서
본문
_id 필드의 제한 사항
_id 필드는 다양한 쿼리에 사용할 수 있지만, 집계(aggregation), 정렬(sorting), 스크립팅(scripting)에는 사용이 제한돼요. _id 필드로 정렬하거나 집계해야 한다면, _id 내용을 doc_values가 활성화된 다른 필드에 복제하는 것이 좋아요. 예제는 IDs query를 참고하세요.