2013-08-28 19:24:34 -04:00
|
|
|
[[mapping-id-field]]
|
|
|
|
=== `_id`
|
|
|
|
|
|
|
|
Each document indexed is associated with an id and a type. The `_id`
|
|
|
|
field can be used to index just the id, and possible also store it. By
|
|
|
|
default it is not indexed and not stored (thus, not created).
|
|
|
|
|
|
|
|
Note, even though the `_id` is not indexed, all the APIs still work
|
|
|
|
(since they work with the `_uid` field), as well as fetching by ids
|
|
|
|
using `term`, `terms` or `prefix` queries/filters (including the
|
|
|
|
specific `ids` query/filter).
|
|
|
|
|
|
|
|
The `_id` field can be enabled to be indexed, and possibly stored,
|
|
|
|
using:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
|
|
|
{
|
|
|
|
"tweet" : {
|
2013-11-07 10:56:59 -05:00
|
|
|
"_id" : {"index": "not_analyzed", "store" : false }
|
2013-08-28 19:24:34 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
--------------------------------------------------
|
|
|
|
|
|
|
|
The `_id` mapping can also be associated with a `path` that will be used
|
|
|
|
to extract the id from a different location in the source document. For
|
|
|
|
example, having the following mapping:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
|
|
|
{
|
|
|
|
"tweet" : {
|
|
|
|
"_id" : {
|
|
|
|
"path" : "post_id"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
--------------------------------------------------
|
|
|
|
|
|
|
|
Will cause `1` to be used as the id for:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
|
|
|
{
|
|
|
|
"message" : "You know, for Search",
|
|
|
|
"post_id" : "1"
|
|
|
|
}
|
|
|
|
--------------------------------------------------
|
|
|
|
|
|
|
|
This does require an additional lightweight parsing step while indexing,
|
|
|
|
in order to extract the id to decide which shard the index operation
|
|
|
|
will be executed on.
|