elasticsearch 我可以通过elasticsearch-template.json设置logstash默认elasticsearch映射吗,elasticsearch,logstash,elasticsearch,Logstash" /> elasticsearch 我可以通过elasticsearch-template.json设置logstash默认elasticsearch映射吗,elasticsearch,logstash,elasticsearch,Logstash" />

elasticsearch 我可以通过elasticsearch-template.json设置logstash默认elasticsearch映射吗

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" : {

我使用logstash+elasticsearch收集系统日志,并希望为日志老化设置ttl

我在logstash中找到一个名为elasticsearch-template.json的文件,路径是logstash/logstash-1.4.2/lib/logstash/outputs/elasticsearch/elasticsearch-template.json

我在文件中添加ttl信息,如下所示:

{
  "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
。现在,如果我想将消息设置为“未分析”,它将不起作用。它仍在分析中。如果你已经完成了我提到的所有工作,但它没有起作用,那主要是因为你没有重新编制数据索引。如果索引已经存在,我认为您不能更改索引的模式。您需要将所有内容重新索引到新索引,或者删除当前索引并重新导入数据