Mapping a document
The document mapping is also referred to as the root object. This has special parameters that control its behavior, and they are mainly used internally to do special processing, such as routing or time-to-live of documents.
In this recipe, we'll look at these special fields and learn how to use them.
Getting ready
You will need an up-and-running Elasticsearch installation, as we described in the Downloading and installing Elasticsearch recipe of Chapter 1, Getting Started.
To execute the commands in this recipe, you can use any HTTP client, such as curl (https://curl.haxx.se/), Postman (https://www.getpostman.com/), or similar. I suggest using the Kibana console, which provides code completion and better character escaping for Elasticsearch.
How to do it…
We can extend the preceding order example by adding some of the special fields, like so:
PUT test/_mapping { "_source": { "store": true }, "_routing": { "required": true }, "_index": { "enabled": true }, "properties": {} }
How it works…
Every special field has parameters and value options, such as the following:
_id
: This allows you to index only the ID part of the document. All the ID queries will speed up using the ID value (by default, this is not indexed and not stored)._index
: This controls whether or not the index must be stored as part of the document. It can be enabled by setting the"enabled": true
parameter (enabled=false
is the default)._source
: This controls how the document's source is stored. Storing the source is very useful, but it's a storage overhead, so it is not required. Consequently, it's better to turn it off (enabled=true
is the default)._routing
: This defines the shard that will store the document. It supports additional parameters, such asrequired
(true/false
). This is used to force the presence of the routing value, raising an exception if it's not provided.
Controlling how to index and process a document is very important and allows you to resolve issues related to complex data types.
Every special field has parameters to set particular configurations, and some of their behaviors could change in different releases of Elasticsearch.
See also
Please refer to the Using dynamic templates in document mapping recipe in this chapter and the Putting a mapping in an index recipe of Chapter 3, Basic Operations, to learn more.