Configure Elasticsearch index template loading
editConfigure Elasticsearch index template loading
editThe setup.template
section of the heartbeat.yml
config file specifies
the index template to use for setting
mappings in Elasticsearch. If template loading is enabled (the default),
Heartbeat loads the index template automatically after successfully
connecting to Elasticsearch.
A connection to Elasticsearch is required to load the index template. If the configured output is not Elasticsearch (or Elasticsearch Service), you must load the template manually.
You can adjust the following settings to load your own template or overwrite an existing one.
-
setup.template.enabled
- Set to false to disable template loading. If this is set to false, you must load the template manually.
-
setup.template.type
-
Deprecated in 7.16. The type of template to use. The default value is
index
, that loads index templates. If JSON templates are used, it defaults tolegacy
.
Further options: legacy
, legacy index templates before Elasticsearch v7.8.
Use this to avoid breaking existing deployments.
And component
, selecting it loads a component template which can be included in index templates.
The option index
loads the new composable index template.
-
setup.template.name
-
The name of the template. The default is
heartbeat
. The Heartbeat version is always appended to the given name, so the final name isheartbeat-%{[agent.version]}
.
-
setup.template.pattern
-
The template pattern to apply to the default index settings. The default pattern is
heartbeat-*
. The Heartbeat version is always included in the pattern, so the final pattern isheartbeat-%{[agent.version]}-*
. The wildcard character-*
is used to match all daily indices.Example:
setup.template.name: "heartbeat" setup.template.pattern: "heartbeat-*"
-
setup.template.fields
-
The path to the YAML file describing the fields. The default is
fields.yml
. If a relative path is set, it is considered relative to the config path. See the Directory layout section for details. -
setup.template.overwrite
- A boolean that specifies whether to overwrite the existing template. The default is false. Do not enable this option if you start more than one instance of Heartbeat at the same time. It can overload Elasticsearch by sending too many template update requests.
-
setup.template.settings
-
A dictionary of settings to place into the
settings.index
dictionary of the Elasticsearch template. For more details about the available Elasticsearch mapping options, please see the Elasticsearch mapping reference.Example:
setup.template.name: "heartbeat" setup.template.fields: "fields.yml" setup.template.overwrite: false setup.template.settings: index.number_of_shards: 1 index.number_of_replicas: 1
-
setup.template.settings._source
-
A dictionary of settings for the
_source
field. For the available settings, please see the Elasticsearch reference.Example:
setup.template.name: "heartbeat" setup.template.fields: "fields.yml" setup.template.overwrite: false setup.template.settings: _source.enabled: false
-
setup.template.append_fields
-
A list of fields to be added to the template and Kibana index pattern. This setting adds new fields. It does not overwrite or change existing fields.
This setting is useful when your data contains fields that Heartbeat doesn’t know about in advance.
If
append_fields
is specified along withoverwrite: true
, Heartbeat overwrites the existing template and applies the new template when creating new indices. Existing indices are not affected. If you’re running multiple instances of Heartbeat with differentappend_fields
settings, the last one writing the template takes precedence.Any changes to this setting also affect the Kibana index pattern.
Example config:
setup.template.overwrite: true setup.template.append_fields: - name: test.name type: keyword - name: test.hostname type: long
-
setup.template.json.enabled
-
Set to
true
to load a JSON-based template file. Specify the path to your Elasticsearch index template file and set the name of the template.
When loading JSON templates, setup.template.type
defaults to legacy, so you
do not have to migrate your existing JSON template. However, in 8.0 the support
for the format is dropped.
+
setup.template.json.enabled: true setup.template.json.path: "template.json" setup.template.json.name: "template-name
If the JSON template is used, the fields.yml
is skipped for the template
generation.