123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- [[indices-templates]]
- == Index Templates
- Index templates allow to define templates that will automatically be
- applied to new indices created. The templates include both settings and
- mappings, and a simple pattern template that controls if the template
- will be applied to the index created. For example:
- [source,js]
- --------------------------------------------------
- curl -XPUT localhost:9200/_template/template_1 -d '
- {
- "template" : "te*",
- "settings" : {
- "number_of_shards" : 1
- },
- "mappings" : {
- "type1" : {
- "_source" : { "enabled" : false }
- }
- }
- }
- '
- --------------------------------------------------
- Defines a template named template_1, with a template pattern of `te*`.
- The settings and mappings will be applied to any index name that matches
- the `te*` template.
- It is also possible to include aliases in an index template as follows:
- [source,js]
- --------------------------------------------------
- curl -XPUT localhost:9200/_template/template_1 -d '
- {
- "template" : "te*",
- "settings" : {
- "number_of_shards" : 1
- },
- "aliases" : {
- "alias1" : {},
- "alias2" : {
- "filter" : {
- "term" : {"user" : "kimchy" }
- },
- "routing" : "kimchy"
- },
- "{index}-alias" : {} <1>
- }
- }
- '
- --------------------------------------------------
- <1> the `{index}` placeholder within the alias name will be replaced with the
- actual index name that the template gets applied to during index creation.
- [float]
- [[delete]]
- === Deleting a Template
- Index templates are identified by a name (in the above case
- `template_1`) and can be deleted as well:
- [source,js]
- --------------------------------------------------
- curl -XDELETE localhost:9200/_template/template_1
- --------------------------------------------------
- [float]
- [[getting]]
- === Getting templates
- Index templates are identified by a name (in the above case
- `template_1`) and can be retrieved using the following:
- [source,js]
- --------------------------------------------------
- curl -XGET localhost:9200/_template/template_1
- --------------------------------------------------
- You can also match several templates by using wildcards like:
- [source,js]
- --------------------------------------------------
- curl -XGET localhost:9200/_template/temp*
- curl -XGET localhost:9200/_template/template_1,template_2
- --------------------------------------------------
- To get list of all index templates you can run:
- [source,js]
- --------------------------------------------------
- curl -XGET localhost:9200/_template/
- --------------------------------------------------
- [float]
- [[indices-templates-exists]]
- === Templates exists
- Used to check if the template exists or not. For example:
- [source,js]
- -----------------------------------------------
- curl -XHEAD -i localhost:9200/_template/template_1
- -----------------------------------------------
- The HTTP status code indicates if the template with the given name
- exists or not. A status code `200` means it exists, a `404` it does not.
- [float]
- [[multiple-templates]]
- === Multiple Template Matching
- Multiple index templates can potentially match an index, in this case,
- both the settings and mappings are merged into the final configuration
- of the index. The order of the merging can be controlled using the
- `order` parameter, with lower order being applied first, and higher
- orders overriding them. For example:
- [source,js]
- --------------------------------------------------
- curl -XPUT localhost:9200/_template/template_1 -d '
- {
- "template" : "*",
- "order" : 0,
- "settings" : {
- "number_of_shards" : 1
- },
- "mappings" : {
- "type1" : {
- "_source" : { "enabled" : false }
- }
- }
- }
- '
- curl -XPUT localhost:9200/_template/template_2 -d '
- {
- "template" : "te*",
- "order" : 1,
- "settings" : {
- "number_of_shards" : 1
- },
- "mappings" : {
- "type1" : {
- "_source" : { "enabled" : true }
- }
- }
- }
- '
- --------------------------------------------------
- The above will disable storing the `_source` on all `type1` types, but
- for indices of that start with `te*`, source will still be enabled.
- Note, for mappings, the merging is "deep", meaning that specific
- object/property based mappings can easily be added/overridden on higher
- order templates, with lower order templates providing the basis.
|