【发布时间】:2020-12-01 04:37:20
【问题描述】:
我不熟悉设置适当的生命周期政策,所以我希望有人可以帮我解决这个问题。因此,我每周都会创建一个现有索引。这是第三方集成(他们为我提供了传入日志的管道和索引模板)。每周以“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 个):
我不确定为什么旧索引上会出现“不是写入索引”错误。也许这是因为它仍然“热”并试图将其移动到另一个阶段而不是写入索引?
对于第二个错误,是不是因为索引的名字是错误的rollover?
我也不清楚这是否适合翻转。这些索引每周都会创建,我认为这没问题。我认为通常您会创建一个索引,并让策略根据您的标准(大小、年龄等)将旧的索引分开。我应该改变这个还是让这个政策适用于现有的每周文件?如果您需要,这里是我导入 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) 在末尾添加增量编号,那也可能会起作用。在这里的任何帮助将不胜感激!
【问题讨论】:
标签: elasticsearch indexing pipeline lifecycle ilm