elasticsearch 我可以通过elasticsearch-template.json设置logstash默认elasticsearch映射吗
我使用logstash+elasticsearch收集系统日志,并希望为日志老化设置ttl 我在logstash中找到一个名为elasticsearch-template.json的文件,路径是logstash/logstash-1.4.2/lib/logstash/outputs/elasticsearch/elasticsearch-template.json 我在文件中添加ttl信息,如下所示:elasticsearch 我可以通过elasticsearch-template.json设置logstash默认elasticsearch映射吗,elasticsearch,logstash,elasticsearch,Logstash,我使用logstash+elasticsearch收集系统日志,并希望为日志老化设置ttl 我在logstash中找到一个名为elasticsearch-template.json的文件,路径是logstash/logstash-1.4.2/lib/logstash/outputs/elasticsearch/elasticsearch-template.json 我在文件中添加ttl信息,如下所示: { "template" : "logstash-*", "settings" : {
{
"template" : "logstash-*",
"settings" : {
"index.refresh_interval" : "5s"
},
"mappings" : {
"_default_" : {
"_all" : {"enabled" : true},
"dynamic_templates" : [ {
"string_fields" : {
"match" : "*",
"match_mapping_type" : "string",
"mapping" : {
"type" : "string", "index" : "analyzed", "omit_norms" : true,
"fields" : {
"raw" : {"type": "string", "index" : "not_analyzed", "ignore_above" : 256}
}
}
}
} ],
"_ttl": {
"enabled": true,
"default": "1d"
},
"properties" : {
"@version": { "type": "string", "index": "not_analyzed" },
"geoip" : {
"type" : "object",
"dynamic": true,
"path": "full",
"properties" : {
"location" : { "type" : "geo_point" }
}
}
}
}
}
}
然后重新启动logstash,删除所有elasticsearch索引。
我在elasticsearch中检查了新索引的映射,但它没有以这种方式工作
如何配置索引模板 看起来JSON文件不在正确的文件夹中。以下是有关如何使用模板的文档: 关于文件夹: 配置
索引模板也可以放在模板目录下的配置位置(path.conf)中(注意,确保将它们放在所有符合条件的主节点上)。例如,一个名为template_1.json的文件可以放在config/templates下,如果它与索引匹配,就会添加它。下面是提到的文件的示例:您需要更改日志存储配置 如果您遵循默认设置,logstash已经在elasticsearch中创建了一个名为
logstash
的模板,logstash将继续使用存储在elasticsearch中的模板,除非您告诉它不要显式使用
修改找到的模板文件,但除此之外,在日志存储配置中,设置以下内容:
output {
elasticsearch {
...
template_overwrite => true
...
}
}
我已经创建了新的template.json文件,并将其路径定义到logstash.yml配置文件的elasticsearch输出块中:
stdout { codec => json_lines }
elasticsearch {
"hosts" => ["ip:port"]
"index" => "name-of-index-%{+dd.MM.YYYY}"
template => "/{path-to-logstash-folder}/templates/your-template.json"
template_overwrite => true
manage_template => false
}
input {
file {
path => "/your-path-to-directory/*.log"
type => "name-of-type"
}
}
在logstash.yml配置文件的输入块中定义的Elastic I的文档类型:
stdout { codec => json_lines }
elasticsearch {
"hosts" => ["ip:port"]
"index" => "name-of-index-%{+dd.MM.YYYY}"
template => "/{path-to-logstash-folder}/templates/your-template.json"
template_overwrite => true
manage_template => false
}
input {
file {
path => "/your-path-to-directory/*.log"
type => "name-of-type"
}
}
这是我的template.json文件
{
"name-of-index": {
"order": 0,
"version": 50001,
"template": "name-of-index-*",
"settings": {
"index": {
"refresh_interval": "5s"
}
},
"mappings": {
"_default_": {
"dynamic_templates": [
{
"message_field": {
"path_match": "message",
"mapping": {
"norms": false,
"type": "text"
},
"match_mapping_type": "string"
}
},
{
"string_fields": {
"mapping": {
"norms": false,
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
}
}
},
"match_mapping_type": "string",
"match": "*"
}
}
],
"_all": {
"norms": false,
"enabled": true
},
"properties": {
"@timestamp": {
"include_in_all": false,
"type": "date"
},
"geoip": {
"dynamic": true,
"properties": {
"ip": {
"type": "ip"
},
"latitude": {
"type": "half_float"
},
"location": {
"type": "geo_point"
},
"longitude": {
"type": "half_float"
}
}
},
"@version": {
"include_in_all": false,
"type": "keyword"
}
}
}
},
"aliases": {}
}
}
谢谢你的回答。我在“/elasticsearch-1.4.0/config/elasticsearch.yml”中找到了配置(path.conf),但是如何使用这种方式设置索引模板呢?很抱歉,我没有看到您的示例文件。只需在您的配置文件夹中创建模板文件夹,然后将JSON文件复制到上面即可。然后重新启动ES,你就应该有映射了。对于新访问者,有一个名为“kopf”的插件,它有很多特性。其中之一就是可以轻松地编辑模板并将其保存在编辑器中。例如根据集群更改碎片/副本的数量等。如何访问日志存储模板文件?它在哪里?它应该在您的logstash目录中,如果您找不到它,您可以创建自己的,并要求logstash使用logstash配置文件中的自定义模板文件。在日志存储配置中添加
template=>“/path/to/elasticsearch\u template.json”\n template\u name=>“您想要的\u name”
。我这里有一些例子:用于logstash配置和elasticsearch_模板。请注意,elasticsearch_模板中的template
字段。json
必须与elasticsearch索引
名称logstash正在写入logstash.conf
中配置的文件兼容。如果我想对此文件进行更改,该怎么办?我需要在多个地方换车吗?它位于我的系统中的/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-2.5.5-java/lib/logstash/outputs/elasticsearch/elasticsearch template.json
。现在,如果我想将消息设置为“未分析”,它将不起作用。它仍在分析中。如果你已经完成了我提到的所有工作,但它没有起作用,那主要是因为你没有重新编制数据索引。如果索引已经存在,我认为您不能更改索引的模式。您需要将所有内容重新索引到新索引,或者删除当前索引并重新导入数据