亲,只收二进制

k8s部署es集群,es集群在重启后,重启前删除的数据又能查询到

Elasticsearch | 作者 itman_wei | 发布于2022年07月27日 | 阅读数:1628

在k8s集群上部署了三个实例的es集群,创建一个索引,然后不断往这个索引作批量操作(包括创建、修改和删除文档),操作一段时间后,查询其中一个文档假设id是12345,这时候文档是查询不到的(这个文档经历了创建、修改和删除操作),然后在虚拟机上执行脚本,让k8s处于内存不足的状态,这时候es集群的pod自动不断重启中,此时es集群不可用。一段时间后,恢复k8s集群,然后es集群也自动恢复了,这个时候再去查询id为12345的文档,又能查到。请问这个重启过程中,es做了什么事情导致被删除的文档又能查到?
已邀请:

Charele - Cisco4321

赞同来自:

没用过k8s。
也不知道你这是什么神操作(让它内存不足,不断重启,,,)
 
不管如何,一个正常集群,你插入一条数据,
只要不删除它,你用GET是肯定有结果的。(SEARCH不一定)
 
实在不行,你可以先搞一个节点的集群看下。
 
贴出你的集群状态,是不是正常。

Charele - Cisco4321

赞同来自:

没想出什么有什么原因会出现这种情况,
删除的数据还能再活过来。
 
1 你的这个索引有什么特别设置吗?
2 你能重现这个吗?你在执行那个神奇脚本之前,先执行下_flush看看呢,
 
另外,你的ES版本应该是ES7之前的版本吧,

locatelli

赞同来自:

已经删除的文档不可能自动恢复。
- 确定是一个文档吗?timestamp都一致?
- 有没有可能是新创建的文档?
- 这个现象可以稳定重现?
 
另外,如果你的业务需要大量update/delete操作,ES不见得适合

Judge

赞同来自:

挂掉恢复最近的数据都是在translog里,有可能在做delete操作时挂掉,translog没有及时做fsync,导致translog中也没有记录到这次delete操作

要回复问题请先登录注册