Не уверен, что вы можете добавить index_pattern
как my_index-%{+YYYY.MM.dd}
, потому что при его создании и PUT my_index-2019.03.10
у него будет пустое сопоставление, потому что оно не распознается. У меня была та же проблема, и обходной путь для этого состоял в том, чтобы установить index_pattern
как my_index-*
и добавить суффикс года к индексам, который должен выглядеть как my_index-2017, my_index-2018...
{
"my_index_template" : {
"order" : 0,
"index_patterns" : [
"my_index-*"
],
"settings" : {
"index" : {
"number_of_shards" : "5",
"number_of_replicas" : "1"
}
},...
Я взял часть года из поля отметки времени (YYYY-MM-dd)
, чтобы сгенерировать year
и добавить его в конец имени индекса на logstash
grok {
match => [
"timestamp", "(?<index_year>%{YEAR})"
]
}
mutate {
add_field => {
"[@metadata][index_year]" => "%{index_year}"
}
}
mutate {
remove_field => [ "index_year", "@version" ]
}
}
output{
elasticsearch {
hosts => ["localhost:9200"]
index => "my_index-%{[@metadata][index_year]}"
document_id => "%{some_field}"
}
}
После того, как logstash
был завершен, мне удалось получить индексы my_index-2017
, my_index-2018
и my_index-2019
с 5 осколками, 1 репликой и корректным отображением, как я предопределил в своем шаблоне.