ElasticSearch索引生命周期策略配置(ES TTL)
背景
有些索引数据作为临时数据存放,一段时间后我们希望索引可以自动过期删除,就是常说的TTL(Time To Live)机制
ElasticSearch索引数量过多会占用很多主分片和副本分片,最终导致可用分片数量为0,不能再创建新的索引
这里说明一下,我们用的ElasticSearch版本为7.8.0
官方文档
关于如何管理索引的生命周期策略,官方文档有详细的描述,英语基础能力好的同学可以自行研读官方wiki
Elasticsearch7.8 生命周期策略配置
https://www.elastic.co/guide/en/elasticsearch/reference/7.8/set-up-lifecycle-policy.html
Elasticsearch7.8 开启生命周期管理
https://www.elastic.co/guide/en/elasticsearch/reference/7.8/start-stop-ilm.html
Elasticsearch7.8 查询生命周期策略
https://www.elastic.co/guide/en/elasticsearch/reference/7.8/ilm-get-lifecycle.html
启用索引生命周期管理策略
curl -u 用户名:密码 --location --request POST http://127.0.0.1:9200/_ilm/start
创建Elasticsearch生命周期策略,TTL时间1小时
curl -u 用户名:密码 --location --request PUT http://127.0.0.1:9200/_ilm/policy/index_ttl_one_hours_policy --header "Content-Type: application/json" --data-raw "{\"policy\":{\"phases\":{\"delete\":{\"min_age\":\"1h\",\"actions\":{\"delete\":{}}}}}}"
查看已创建的生命周期管理策略
curl -u 用户名:密码 --request GET http://127.0.0.1:9200/_ilm/policy
调用客户端创建引用生命周期策略的索引
public boolean createIndex() throws IOException { String indexName = "test_index"; Settings settings = Settings.builder().put("index.lifecycle.name", "index_ttl_one_hours_policy").build(); CreateIndexRequest createIndexRequest = new CreateIndexRequest(indexName); createIndexRequest.settings(settings); CreateIndexResponse indexResponse = EsRestClientCache.getEsClient(EsConstants.DEFAULT).indices().create(createIndexRequest, RequestOptions.DEFAULT); log.info("CreateIndexResponse:" + indexResponse); return indexResponse.isAcknowledged(); }
ElasticSearch生命周期策略时间单位
d - Days
h - Hours
m - Minutes
s - Seconds
ms - Milliseconds
micros - Microseconds
nanos - Nanoseconds
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~