Logstash——自定义模板不生效问题

 

方法一:设定模板优先级

遇到自定义模板不生效的问题后:

这个原因是:Logstash 默认会上传一个名叫 logstash 的模板到 ES 里。如果你在使用自定义模板之前,曾经运行过 Logstash(一般来说都会),那么 ES 里就已经存在这么一个模板了。你可以curl -XGET 'http://127.0.0.1:9200/_template/logstash' 验证。

这个时候,ES 里就变成有两个模板,logstash 和 myname,都匹配 logstash-* 索引名,要求设置一定的映射规则了。

ES 会按照一定的规则来尝试自动 merge 多个都匹配上了的模板规则,最终运用到索引上

其中要点就是:template 是可以设置 order 参数的!而不写这个参数,默认的 order 值就是 0。order 值越大,在 merge 规则的时候优先级越高。

 

方法二:设置document_type

如果用的7.x版本的,大概率是没有配置 document_type

output {
    if [type]=="tb_tool"{
        elasticsearch {
        	 # 如果不配置type,动态模板会创建失败
			document_type => "_doc"
            hosts => ["10.0.14.40:31815"]
            # 索引名称
            index => "tb_tool"
            # 文档id,inquiryId为sql文件中查询出的字段名
            document_id => "%{id}"
            #如果设置为true,模板名字一样的时候,新的模板会覆盖旧的模板
            template_overwrite => true
			template_name => "tb_tool"
            #映射配置文件的位置
            template => "../config/test.json"
        }
        stdout {
            # JSON格式输出
            codec => json_lines
        }
    }
}

 

上面两种方法分别来自以下两篇文章:

https://blog.csdn.net/u013014636/article/details/110139516

https://blog.csdn.net/lyf_ldh/article/details/86013136

 

你可能感兴趣的:(ElasticSearch)