我是建立适当生命周期政策的新手,所以我希望有人可以帮我解决这个问题。因此,我每周都会创建一个现有索引。这是第三方集成(他们为我提供了传入日志的管道和索引模板)。每周以“name-YYYY-MM-DD”的模式创建日志。我正在尝试为这些索引设置生命周期策略,以便它们从 hot->warm->delete 转换。到目前为止,我已经完成了以下工作:
更新了索引模板以添加策略并设置别名:
{
"index": {
"lifecycle": {
"name": "Cloudflare",
"rollover_alias": "cloudflare"
},
"mapping": {
"ignore_malformed": "true"
},
"number_of_shards": "1",
"number_of_replicas": "1"
在现有索引上,设置别名以及哪个是“写入”索引:
POST /_aliases
{
"actions" : [
{
"add" : {
"index" : "cloudflare-2020-07-13",
"alias" : "cloudflare",
"is_write_index" : true
}
}
]
}
POST /_aliases
{
"actions" : [
{
"add" : {
"index" : "cloudflare-2020-07-06",
"alias" : "cloudflare",
"is_write_index" : false
}
}
]
}
一旦我这样做了,我开始看到以下 2 个错误(每个索引上 1 个):
我不确定为什么“不是写索引”错误会出现在旧索引上。也许这是因为它仍然“热”并试图将其移至另一个阶段而不是写入索引?
对于第二个错误,是不是因为索引的名称错误而无法翻转?
我也不清楚这是否是一个很好的翻转方案。这些索引每周都会创建,我认为这没问题。我认为通常您会创建一个索引,并让策略根据您的标准(大小、年龄等)将旧的索引分开。我应该改变这个还是让这个政策适用于现有的每周文件?如果您需要,这里是我导入 ElasticSearch 的管道的一部分,我认为它负责索引命名:
{
"date_index_name" : {
"field" : "EdgeStartTimestamp",
"index_name_prefix" : "cloudflare-",
"date_rounding" : "w",
"timezone" : "UTC",
"date_formats" : [
"uuuu-MM-dd'T'HH:mm:ssX",
"uuuu-MM-dd'T'HH:mm:ss.SSSX",
"yyyy-MM-dd'T'HH:mm:ssZ",
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"
]
}
},
所以,对我来说,目前更重要的错误是“number_format_exception”。我想这是由于我在索引中看到的这个设置(provided_name):
{
"settings": {
"index": {
"lifecycle": {
"name": "Cloudflare",
"rollover_alias": "cloudflare"
},
"mapping": {
"ignore_malformed": "true"
},
"number_of_shards": "1",
"provided_name": "<cloudflare-{2020-07-20||/w{yyyy-MM-dd|UTC}}>",
"creation_date": "1595203589799",
"priority": "100",
"number_of_replicas": "1",
我相信这个“provided_name”是从我上面提供的管道的“date_index_name”中建立起来的。如果这是问题所在,有没有办法通过摄取管道创建一个固定的索引名称而不根据日期进行更改?我宁愿只创建一个固定索引,让生命周期策略处理拆分(即 0001、0002 等)。
我一直在寻找一种方法来创建一个没有“date_index_name”处理器的固定索引名称,但我还没有找到一种方法来做到这一点。或者,如果我可以创建一个带日期的索引名称并添加一个后缀,以允许生命周期策略管理器 (ILM) 在末尾添加增量编号,那也可能会起作用。这里的任何帮助将不胜感激!