mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-17 18:35: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.
72 lines
1.6 KiB
Plaintext
72 lines
1.6 KiB
Plaintext
[[mapping-uid-field]]
|
|
=== `_uid` field
|
|
|
|
deprecated[6.0.0, Now that types have been removed, documents are uniquely
|
|
identified by their `_id` and the `_uid` field has only been kept as a view
|
|
over the `_id` field for backward compatibility.]
|
|
|
|
Each document indexed is associated with a <<mapping-type-field,`_type`>> (see
|
|
<<mapping-type>>) and an <<mapping-id-field,`_id`>>. These values are
|
|
combined as `{type}#{id}` and indexed as the `_uid` field.
|
|
|
|
The value of the `_uid` field is accessible in queries, aggregations, scripts,
|
|
and when sorting:
|
|
|
|
[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"
|
|
}
|
|
--------------------------
|
|
// CONSOLE
|
|
|
|
[source,js]
|
|
--------------------------
|
|
GET my_index/_search
|
|
{
|
|
"query": {
|
|
"terms": {
|
|
"_uid": [ "my_type#1", "my_type#2" ] <1>
|
|
}
|
|
},
|
|
"aggs": {
|
|
"UIDs": {
|
|
"terms": {
|
|
"field": "_uid", <2>
|
|
"size": 10
|
|
}
|
|
}
|
|
},
|
|
"sort": [
|
|
{
|
|
"_uid": { <3>
|
|
"order": "desc"
|
|
}
|
|
}
|
|
],
|
|
"script_fields": {
|
|
"UID": {
|
|
"script": {
|
|
"lang": "painless",
|
|
"inline": "doc['_uid']" <4>
|
|
}
|
|
}
|
|
}
|
|
}
|
|
--------------------------
|
|
// CONSOLE
|
|
// TEST[continued]
|
|
// TEST[warning:Fielddata access on the _uid field is deprecated, use _id instead]
|
|
|
|
<1> Querying on the `_uid` field (also see the <<query-dsl-ids-query,`ids` query>>)
|
|
<2> Aggregating on the `_uid` field
|
|
<3> Sorting on the `_uid` field
|
|
<4> Accessing the `_uid` field in scripts
|