未使用 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 并查看该索引的设置时,该模板中的所有映射都得到尊重,这很好,但是 settings
部分中的所有内容都被忽略并且它采用默认值(即 number_of_shards=5
和 number_of_replicas=1
)
一些调查笔记:
如果我在从 ES 本身安装后获得模板,我会在模板中看到正确的值(对于 mappings
和 settings
)。他们只是似乎没有申请索引
此外,如果我获取模板文件的内容并使用 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"
}
}
}
我从 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 并查看该索引的设置时,该模板中的所有映射都得到尊重,这很好,但是 settings
部分中的所有内容都被忽略并且它采用默认值(即 number_of_shards=5
和 number_of_replicas=1
)
一些调查笔记:
如果我在从 ES 本身安装后获得模板,我会在模板中看到正确的值(对于 mappings
和 settings
)。他们只是似乎没有申请索引
此外,如果我获取模板文件的内容并使用 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"
}
}
}