_id field
edit_id
field
editEach document has an _id
that uniquely identifies it, which is indexed
so that documents can be looked up either with the GET API or the
ids
query. The _id
can either be assigned at
indexing time, or a unique _id
can be generated by Elasticsearch. 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
.
response = client.index( index: 'my-index-000001', id: 1, body: { text: 'Document with ID 1' } ) puts response response = client.index( index: 'my-index-000001', id: 2, refresh: true, body: { text: 'Document with ID 2' } ) puts response response = client.index( index: 'my-index-000001', body: { query: { terms: { _id: [ '1', '2' ] } } } ) puts response
{ res, err := es.Index( "my-index-000001", strings.NewReader(`{ "text": "Document with ID 1" }`), es.Index.WithDocumentID("1"), es.Index.WithPretty(), ) fmt.Println(res, err) } { res, err := es.Index( "my-index-000001", strings.NewReader(`{ "text": "Document with ID 2" }`), es.Index.WithDocumentID("2"), es.Index.WithRefresh("true"), es.Index.WithPretty(), ) fmt.Println(res, err) } { res, err := es.Search( es.Search.WithIndex("my-index-000001"), es.Search.WithBody(strings.NewReader(`{ "query": { "terms": { "_id": [ "1", "2" ] } } }`)), es.Search.WithPretty(), ) fmt.Println(res, err) }
# 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" ] } } }
Querying on the |
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.
_id
is limited to 512 bytes in size and larger values will be rejected.