elasticsearch,logstash,Templates,elasticsearch,Logstash" /> elasticsearch,logstash,Templates,elasticsearch,Logstash" />

Templates Logstash不断覆盖Elasticsearch索引模板

Templates Logstash不断覆盖Elasticsearch索引模板,templates,elasticsearch,logstash,Templates,elasticsearch,Logstash,我正在使用Logstash将日志数据发送到Elasticsearch数据库。我想将碎片的数量从3更改为1,并通过ES REST API发出以下命令: PUT server_name/_template/logstash { "template": "logstash", "settings": { "index.number_of_replicas": "0", "index.refresh_interval": "5s",

我正在使用Logstash将日志数据发送到Elasticsearch数据库。我想将碎片的数量从3更改为1,并通过ES REST API发出以下命令:

PUT server_name/_template/logstash
{
    "template": "logstash",
        "settings": {
            "index.number_of_replicas": "0",
            "index.refresh_interval": "5s",
            "index.number_of_shards": "1"
        }
}
服务器响应正常,如果我发出GET\u template/logstash,我可以看到碎片的数量现在设置为1

然后我启动logstash,并将输出设置为将日志发送到Elasticsearch。没有与模板相关的设置。发送日志数据后,我看到碎片的数量被设置回其默认值(3)

我甚至试图通过引用Logstash配置文件中的模板来覆盖它。不,无论我指定什么,设置都会重置回来。看起来Logstash一直在用一些默认值覆盖Elasticsearch索引设置,我不知道如何禁用它


更新。我已将以下行添加到Logstash配置文件中,但没有帮助:

    manage_template => false
    template_overwrite => true
还尝试将模板覆盖设置为false。我尝试了两种不同的方法来设置JSON文件中的碎片数:

{
    "logstash": {
        "template": "logstash-*",
        "settings": {
            "index.number_of_replicas": "0",
            "index.refresh_interval": "5s",
            "index.number_of_shards": "1"
        }
    }
}


在Logstash配置中的
elasticsearch{}
元素上,如果要在Logstash之外管理模板,则需要添加
manage\u template=>false

好的,几个小时后我发现以下内容:

  • 覆盖Logstash模板的主要原因是我在Logstash输出部分有两个Elasticsearch部分,其中包含条件选择(if/else)。尽管我在第一个(“if”)部分正确配置了索引设置,但只要Logstash遇到满足另一个(“else”)部分的日志,它就会使用默认模板重写自定义模板

  • “管理模板”选项很重要。对于引用自定义模板设置文件的配置块,必须将其设置为“true”,对于不应覆盖自定义日志存储模板的块,必须将其设置为“false”


  • 我已经在配置中添加了以下几行:manage\u template=>false template\u overwrite=>true,但是在删除索引并重新启动Logstash之后,我仍然会得到默认的碎片数。谢谢。我也试过了。神秘。仍然重置。我还发布了我的JSON文件的内容。你删除了logstash-*索引ie
    curl localhost:9200/_cat/shards | grep logstash
    没有显示索引/碎片?因为您无法更改已创建索引上的碎片数。是的,我每次都会删除用于测试的索引。您是否有另一个使用不同设置运行的logstash副本?(即
    GET localhost:9200/_cluster/state/nodes?pretty
    )显示任何日志存储节点(我的集群显示3个,因为我运行了多个日志存储副本)
    {
        "template": "logstash-*",
        "settings" : {
            "index.number_of_shards" : 1,
            "index.number_of_replicas" : 0,
        }
    }