问题由来: 因为公司要进行发版一个新版本,需要要保留指定URL的数据不被定时删除,此时Kinbana就无法满足这个条件啦, 于是我就把index和lifecycle的关系全部解除啦, 走Java 代码,但是发现效果并不是很好,于是回滚的时候,原封不动得执行了当初第一次kinbana的配置,此时线上已经从0009 ~ 00045 这些都是滚动索引
## 删除所有的别名
POST /_aliases
{
"actions": [
{
"remove": {
"index": "process-log-*",
"alias": "process-log"
}
}
]
}
## 解除索引和策略的绑定
POST process-log-*/_ilm/remove
## 删除模板
DELETE _template/process-log-template
## 增加模板
PUT _template/process-log-template
{
"index_patterns": ["process-log-*"],
"settings": {
"number_of_shards": 2,
"index.lifecycle.name": "process-log-lifecycle",
"index.lifecycle.rollover_alias": "process-logs",
"index" : {
"sort.field" : "requestTime",
"sort.order" : "desc"
}
},
"mappings": {
"properties":{
"consumeTime": {
"type": "long"
},
"insertTime": {
"type": "long"
},
"ip": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"method": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"params": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"requestTime": {
"type": "long"
},
"requestUri": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"responseTime": {
"type": "long"
},
"result": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"serverName": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"status": {
"type": "long"
},
"userAgent": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
## 增加别名
POST /_aliases
{
"actions": [
{
"add": {
"index": "process-log-*",
"alias": "process-logs"
}
},
{
"add": {
"index": "process-log-000045",
"alias": "process-logs",
"is_write_index": true
}
}
]
}
## 将索引添加到模板中
PUT _template/process-log-template
{
"index_patterns": ["process-log-*"],
"settings": {
"index.lifecycle.name": "process-log-lifecycle"
}
}
但是发现大概过了10分钟左右 索引都会报这个错.问题的原因在于他不知道哪个索引是否需要滚动.
我经过简单如下的配置,解决了这个问题
# 解除和索引和策略的绑定
POST process-log-*/_ilm/remove
##删除策略
DELETE _ilm/policy/process-log-lifecycle
##增加策略
PUT _ilm/policy/process-log-lifecycle
{
"policy": {
"phases": {
"hot": {
"min_age": "0ms",
"actions": {
"rollover": {
"max_age": "30d",
"max_size": "20gb"
},
"set_priority": {
"priority": 100
}
}
},
"delete": {
"min_age": "90d",
"actions": {
"delete": {}
}
}
}
}
}
## 删除模板
DELETE _template/process-log-template
## 增加模板
PUT _template/process-log-template
{
"index_patterns": ["process-log-*"],
"settings": {
"number_of_shards": 2,
"index.lifecycle.name": "process-log-lifecycle",
"index.lifecycle.rollover_alias": "process-log",
"index" : {
"sort.field" : "requestTime",
"sort.order" : "desc"
}
},
"mappings": {
"properties":{
"consumeTime": {
"type": "long"
},
"insertTime": {
"type": "long"
},
"ip": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"method": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"params": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"requestTime": {
"type": "long"
},
"requestUri": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"responseTime": {
"type": "long"
},
"result": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"serverName": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"status": {
"type": "long"
},
"userAgent": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
## 去除别名
POST /_aliases
{
"actions": [
{
"remove": {
"index": "process-log-*",
"alias": "process-logs"
}
}
]
}
## 增加别名
POST /_aliases
{
"actions": [
{
"add": {
"index": "process-log-*",
"alias": "process-log",
"is_write_index": false
}
},
{
"add": {
"index": "process-log-000045",
"alias": "process-log",
"is_write_index": true
}
}
]
}
#将索引放入模板和策略中,并且制定全部索引不需要滚动
PUT process-log-*/_settings
{
"index": {
"lifecycle": {
"name": "process-log-lifecycle",
"rollover_alias": "process-log",
"indexing_complete": "true"
}
}
}
#将索引放入模板和策略中,并且制定最新的索引需要滚动,指定他需要滚动
PUT process-log-000045/_settings
{
"index": {
"lifecycle": {
"name": "process-log-lifecycle",
"rollover_alias": "process-log",
"indexing_complete": "false"
}
}
}
到此,困扰了我3天的问题,终于解决