只允许索引模板中的字段
Only allow fields that are in the index template
我有 logstash 将文档推送到 elasticsearch 集群中。
然后我使用 logstash 将模板应用于索引:
elasticsearch {
hosts => 1.1.1.1.,2.2.2.2.
index => "logstash-myindex-%{+YYYY-MM-dd}"
template_name => "mytemplate"
template => "/etc/logstash/index_templates/mytemplate.json"
template_overwrite => true
}
有没有办法只将模板中定义的字段添加到文档中?因为有时候文档有一堆我不关心的其他字段,我不想手动过滤掉每一个。我希望能够说如果不在索引模板中的字段不添加。
编辑:
我在我的索引模板中这样做了,但模板中未指定的字段仍被添加到文档中:
{
"template": "logstash-myindex*",
"order": 10,
"mappings": {
"_default_": {
"dynamic": "scrict",
"_all": {
"enabled": false
},
"properties": {
"@timestamp": {
"type": "date",
"include_in_all": false
},
"@version": {
"type": "keyword",
"include_in_all": false
},
"bytesReceived": {
"type": "text",
"norms": false,
"fields": {
"keyword": {
"type": "keyword"
}
}
},
.... etc
我不熟悉 logstash - 但我假设这就像在 ElasticSearch 中创建索引一样。
在 ElasticSearch 中,您可以通过添加以下内容来禁用 dynamic creation of fields:
"dynamic": false
到映射。
这看起来像这样:
{
"mappings": {
"_default_": {
"dynamic": false
}
}
}
我有 logstash 将文档推送到 elasticsearch 集群中。
然后我使用 logstash 将模板应用于索引:
elasticsearch {
hosts => 1.1.1.1.,2.2.2.2.
index => "logstash-myindex-%{+YYYY-MM-dd}"
template_name => "mytemplate"
template => "/etc/logstash/index_templates/mytemplate.json"
template_overwrite => true
}
有没有办法只将模板中定义的字段添加到文档中?因为有时候文档有一堆我不关心的其他字段,我不想手动过滤掉每一个。我希望能够说如果不在索引模板中的字段不添加。
编辑: 我在我的索引模板中这样做了,但模板中未指定的字段仍被添加到文档中:
{
"template": "logstash-myindex*",
"order": 10,
"mappings": {
"_default_": {
"dynamic": "scrict",
"_all": {
"enabled": false
},
"properties": {
"@timestamp": {
"type": "date",
"include_in_all": false
},
"@version": {
"type": "keyword",
"include_in_all": false
},
"bytesReceived": {
"type": "text",
"norms": false,
"fields": {
"keyword": {
"type": "keyword"
}
}
},
.... etc
我不熟悉 logstash - 但我假设这就像在 ElasticSearch 中创建索引一样。
在 ElasticSearch 中,您可以通过添加以下内容来禁用 dynamic creation of fields:
"dynamic": false
到映射。
这看起来像这样:
{
"mappings": {
"_default_": {
"dynamic": false
}
}
}