【问题标题】:can i set logstash default elasticsearch mapping through elasticsearch-template.json我可以通过elasticsearch-template.json设置logstash默认的elasticsearch映射吗
【发布时间】:2014-12-17 11:10:14
【问题描述】:

我使用logstash + elasticsearch 来收集syslog,想设置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中检查了新索引的映射,但它并没有以这种方式工作。

如何配置索引模板?

【问题讨论】:

  • 对于新访问者,有一个名为“kopf”的插件,具有很多功能。其中之一是轻松编辑模板并将其保存在编辑器中。诸如根据您的集群更改分片/副本的数量等。

标签: elasticsearch logstash


【解决方案1】:

您需要更改您的 logstash 配置。

如果您遵循默认设置,logstash 已经在 elasticsearch 中创建了一个名为 logstash 的模板,logstash 将继续使用存储在 elasticsearch 中的该模板,除非您明确告知它。

修改您找到的模板文件,但除此之外,在您的 logstash 配置中,设置以下内容:

output {
  elasticsearch {
    ...
    template_overwrite => true
    ...
  }
}

【讨论】:

  • 如何访问logstash模板文件?它在哪里?
  • 它应该在您的logstash目录中,如果您找不到它,您可以随时创建自己的并要求logstash使用logstash配置文件中的自定义模板文件。在您的 logstash 配置中添加 template => "/path/to/elasticsearch_template.json" \n template_name =>"the_name_you_want"。我在这里有示例:github.com/xialingxiao/andokaelk/blob/master/roles/logstash/… 用于 logstash 配置,github.com/xialingxiao/andokaelk/blob/master/roles/logstash/… 用于 elasticsearch_template。
  • 请注意elasticsearch_template.json 中的template 字段必须与index 名称logstash 写入到logstash.conf 中配置的elasticsearch 兼容。
  • 如果我想修改这个文件怎么办?我需要在多个地方更换吗?它位于我系统中的/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-2.5.5-java/lib/logstash/outputs/elasticsearch/elasticsearch-template.json。现在,如果我想将消息设置为不分析,它不起作用。它仍在分析中。
  • 如果您已经完成了我提到的所有操作但没有成功,这主要是因为您没有重新索引数据。如果索引已经存在,我认为您不能更改索引的架构。您需要将所有内容重新索引到新索引或删除当前索引并重新导入数据
【解决方案2】:

该 JSON 文件似乎不在正确的文件夹中。以下是有关如何使用模板的文档: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-templates.html 关于文件夹:

配置

索引模板也可以放置在模板目录下的配置位置 (path.conf) 中(注意,确保将它们放置在所有符合条件的主节点上)。例如,一个名为 template_1.json 的文件可以放在 config/templates 下,如果它与索引匹配,它将被添加。以下是上述文件的示例:

【讨论】:

  • 感谢您的回答。我在“/elasticsearch-1.4.0/config/elasticsearch.yml”中找到了配置(path.conf),但是如何设置索引模板使用这种方式?很抱歉,我没有看到您的示例文件。
  • 只需在配置文件夹中创建模板文件夹并复制 JSON 文件。然后重启 ES,你应该就有了映射。
【解决方案3】:

我已经创建了新的 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
}

我在 logstash.yml 配置文件的输入块中定义了 Elastic 的 document_type:

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

【讨论】:

    猜你喜欢
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    相关资源
    最近更新 更多