---
mapped_pages:
  - https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-id-field.html
---

# _id field [mapping-id-field]

Each document has an `_id` that uniquely identifies it, which is indexed so that documents can be looked up either with the [GET API](https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-get) or the [`ids` query](/reference/query-languages/query-dsl/query-dsl-ids-query.md). The `_id` can either be assigned at indexing time, or a unique `_id` can be generated by {{es}}. This field is not configurable in the mappings.

The value of the `_id` field is accessible in queries such as `term`, `terms`, `match`, and `query_string`.

```console
# Example documents
PUT my-index-000001/_doc/1
{
  "text": "Document with ID 1"
}

PUT my-index-000001/_doc/2?refresh=true
{
  "text": "Document with ID 2"
}

GET my-index-000001/_search
{
  "query": {
    "terms": {
      "_id": [ "1", "2" ] <1>
    }
  }
}
```

1. Querying on the `_id` field (also see the [`ids` query](/reference/query-languages/query-dsl/query-dsl-ids-query.md))


The `_id` field is restricted from use in aggregations, sorting, and scripting. In case sorting or aggregating on the `_id` field is required, it is advised to duplicate the content of the `_id` field into another field that has `doc_values` enabled.

::::{note}
`_id` is limited to 512 bytes in size and larger values will be rejected.

::::


