繁体   English   中英

未使用 logstash 模板中的设置创建 Elasticsearch 索引

[英]Elasticsearch index not being created with settings from logstash template

我有一个新索引的批量上传,我从 logstash 发送到我的 ES 集群。 因此,我希望在加载完成之前关闭复制和刷新,并在上传完成后重新启用这些值。

我有一个如下所示的配置文件

input {
      stdin { type => stdin }
}
filter {
  csv {
     separator => " "
     columns => [ ...]
  }
}

output {
   amazon_es {
     hosts =>
         ["my-domain.us-east-1.es.amazonaws.com"]
     index => "my-index"
     template => "conf/my-index-template.json"
     template_name => "my-index-template-name"
     region => "us-east-1"
  }
}

模板文件看起来像

{
    "template" : "my-index-template-name",
    "mappings" : {
      ...
    },
    "settings" : {
      "index" : {
        "number_of_shards" : "48",
        "number_of_replicas" : "0",
        "refresh_interval": "-1"
      }
    }
}

当我运行 logstash 和 go 来查看该索引的设置时,映射都受到此模板的尊重,这很好,但settings部分中的所有内容都被忽略并且它采用默认值(即number_of_shards=5number_of_replicas=1 )

一些调查说明:如果我在从 ES 本身安装模板后获得模板,我会在模板中看到正确的值(对于mappingssettings )。 他们只是似乎没有应用于索引

此外,如果我获取模板文件的内容并使用PUT手动创建索引,它会按照我的预期显示

我的 logstash 版本是 7.3.0,我的 elasticsearch 版本是 6.7

不知道我在这里做错了什么

您的索引名称是my-index ,但映射中的模板设置使用my-index-template-name ,它需要是正则表达式或与您的索引相同的名称。

由于您使用的是 elasticsearch 6.7,因此您应该在映射中使用index_patterns而不是template

{
    "index_patterns" : ["my-index"],
    "mappings" : {
      ...
    },
    "settings" : {
      "index" : {
        "number_of_shards" : "48",
        "number_of_replicas" : "0",
        "refresh_interval": "-1"
      }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM