es删除索引
背景
集群的索引没有预先规划大小,导致索引特别大,删除数据删除索引的形式进行,只能在原来的索引上进行数据删除操作。
删除索引时采用最经典的方式,即按照时间戳进行删除,比如删除90天以前的历史数据,保留最新的。
Elasticseach会有后台线程根据Lucene的合并规则定期进行segment merging合并操作,一般不需要我们担心。被删除的文档在segment合并时,才会被真正删除掉。在此之前,它仍然会占用着JVM heap和操作系统的文件cache、磁盘等资源。在某些特定情况下,我们需要强制Elasticsearch进行segment merging,已释放其占用的大量系统、磁盘等资源。
执行的期间你会发现,磁盘空间会有一个反复变化的过程,磁盘使用率会先增长,然后在删除释放空间这样一个过程。这个过程无需紧张,都是正常现象
实践
# 假如现在是中午11点,这个表示删除8点-10点之间的全部数据
curl -X POST "http://localhost:9200/nginx-error-2021-10-12/_delete_by_query?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"range": {
"@timestamp": {
"gte": "now-3h",
"lt": "now-1h"
}
}
}
}'
#假如现在是中午11点,这个表示删除早上6点之前的全部数据,也就是比6点早的数据全部删除
curl -X POST "http://localhost:9200/nginx-error-2021-10-12/_delete_by_query?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"range": {
"@timestamp": {
"lt": "now-5h"
}
}
}
}'
#假如现在是中午11点,这个表示删除早上6点-11点之间的数据
curl -X POST "http://localhost:9200/nginx-error-2021-10-12/_delete_by_query?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"range": {
"@timestamp": {
"gt": "now-5h"
}
}
}
}'
#最后再执行下面命令即可开始正式删除数据了,会产生大量的io
curl -X POST http://localhost:9200/nginx-error-2021-10-12/_forcemerge?max_num_segments=1&only_expunge_deletes=true
附带一张实践图片
启发:
上面的过程由自己实践而来,其中受到了下面执行的启发,特此记录一下
POST /index-name/_delete_by_query?slices=auto&conflicts=proceed&wait_for_completion=false
{ //多线程并发删除满足查询条件的数据
"query": {
"bool": {
"filter": {
"bool": {
"must_not": [
{
"term": { //查询条件,可以自定义
"action": "XXXXXXX"
}
},
{
"exists": {
"field": "XXXXXXXX" //查询条件,可以自定义
}
}
]
}
}
}
}
}
参考的一些链接:
腾讯云博客参考:https://cloud.tencent.com/developer/article/1737025
官方文档演示:https://www.elastic.co/guide/cn/elasticsearch/guide/current/_ranges.html
官网文档使用:https://www.elastic.co/guide/en/elasticsearch/reference/6.4/common-options.html#date-math
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
2018-10-13 MySQL基础之 LIKE操作符
2018-10-13 MySQL基础之 AND和OR运算符
2018-10-13 MySQL基础之 索引