OpenSearch/docs/reference/mapping/fields/id-field.asciidoc
Adrien Grand a72eaa8e0f Identify documents by their _id. (#24460)
Now that indices have a single type by default, we can move to the next step
and identify documents using their `_id` rather than the `_uid`.

One notable change in this commit is that I made deletions implicitly create
types. This helps with the live version map in the case that documents are
deleted before the first type is introduced. Otherwise there would be no way
to differenciate `DELETE index/foo/1` followed by `PUT index/foo/1` from
`DELETE index/bar/1` followed by `PUT index/foo/1`, even though those are
different if versioning is involved.
2017-05-09 16:33:52 +02:00

43 lines
1.1 KiB
Plaintext

[[mapping-id-field]]
=== `_id` field
Each document indexed is associated with a <<mapping-type-field,`_type`>> (see
<<mapping-type>>) and an <<mapping-id-field,`_id`>>. The `_id` field is not
indexed as its value can be derived automatically from the
<<mapping-uid-field,`_uid`>> field.
The value of the `_id` field is accessible in certain queries (`term`,
`terms`, `match`, `query_string`, `simple_query_string`).
[source,js]
--------------------------
# Example documents
PUT my_index/my_type/1
{
"text": "Document with ID 1"
}
PUT my_index/my_type/2&refresh=true
{
"text": "Document with ID 2"
}
GET my_index/_search
{
"query": {
"terms": {
"_id": [ "1", "2" ] <1>
}
}
}
--------------------------
// CONSOLE
<1> Querying on the `_id` field (also see the <<query-dsl-ids-query,`ids` query>>)
The value of the `_id` field is also accessible in aggregations or for sorting,
but doing so is discouraged as it requires to load a lot of data in memory. In
case sorting or aggregating on the `_id` field is required, it is advised to
duplicate the content of the `_id` field in another field that has `doc_values`
enabled.