mortenl
mortenl

Reputation: 109

Combining Index Templates with Dynamic Templates

I would like to combine Index Templates and Dynamic Templates so that the dynamic mapping I define is automatically added to all indices created.

Is this possible?

Regards Morten

Upvotes: 4

Views: 3657

Answers (3)

zorg
zorg

Reputation: 51

In Elasticsearch 7.x, document types are now deprecated. For this reason, the examples from old answers will raise exception. Solution below:

PUT /_template/test_template
{
  "index_patterns" : [
    "test*"
  ],
  "mappings": {
    "dynamic_templates": [
      {
        "strings": {
          "match_mapping_type": "string",
          "mapping": {
            "type": "text",
            "fields": {
              "keyword": {
                "type":  "keyword",
                "ignore_above": 1024
              }
            }
          }
        }
      }
    ]
  }
}

P.S. Also I recommend set index type "_doc" into old applications for compatibility with these templates now (fluent-bit v1.3, for example).

Upvotes: 1

Hugodby
Hugodby

Reputation: 1183

In the index template define the mappings as dynamic template. For example :

PUT /_template/template_1
{
  "template": "yourindex*",
  "mappings": {
    "my_type": {
      "dynamic_templates": [
        {your dynamic templates ...}
      ]
    }
  }
}

Upvotes: 5

Val
Val

Reputation: 217564

You can do something like this:

PUT /_template/my_template
{
  "template": "name-*",
  "mappings": {
    "my_type": {
      "dynamic_templates": [
        {
          "rule1": {
            "match": "field*",
            "mapping": {
              "type": "string",
              "index": "analyzed"
            }
          }
        },
        {
          "rule2": {
            "match": "another*",
            "mapping": {
              "type": "integer"
            }
          }
        }
      ],
      "properties": {
         "field": {
             "type": "string"
         }
      }
    }
  }
}

Upvotes: 2

Related Questions