_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를 참고하세요.

더 알아보기 (Learn more)