Each 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.