mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-04-17 21:07:25 +00:00
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.
43 lines
1.1 KiB
Plaintext
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.
|