测试环境elasticSearch数据泄露排查
测试环境elasticSearch数据泄露排查
es中同一条会员 或者车辆或者交易 主要刷新一次 就会有一条被删除的文档
所以几万测试数据 检查那边看到了几百万被删除是记录 以为几百万数据泄露
实际都是删除的 es底层是日志结构 改一次就生成一个新的老的标记为已删除 且删除的数据内容没加密。
elasticSearch 更新文档的时候,实际是删除了原文件,再新建一个文档吗
是的,Elasticsearch 更新文档的实质是通过标记删除旧文档并新建文档实现的,而非直接修改原文档。以下是具体机制分析:
更新操作的本质
更新请求会触发以下流程:
标记旧文档为逻辑删除(记录在.del文件中)
创建包含新数据的新文档并建立索引
版本号(_version)递增以控制并发
物理删除旧文档延迟到段合并(Segment Merge)阶段执行
综上,Elasticsearch的更新操作本质是新建+标记删除的组合,通过延迟物理删除优化性能
elasticSearch 逻辑删除.del文件在哪可以获取
如何查看.del文件
直接访问文件系统:
需进入 Elasticsearch 数据目录(默认路径为 /var/lib/elasticsearch),通过 ls 命令查找 .del 文件
若需查看文件内容,可使用 cat 或文本编辑器
使用 _segments API 可查看分片段的删除信息(需替换 <index_name> 和 <shard_id>):
curl -XGET "http://localhost:9200/<index_name>/_segments?pretty"
手动清理:
若需立即释放空间,可执行 _forcemerge 操作合并段:
curl -XPOST http://localhost:9200/<index_name>/_forcemerge?max_num_segments=1
.del文件打开后的格式 样式?
.del 文件是一种定界ASCII文件格式,其打开后的样式和结构如下:
行与列结构:
.del 文件由多行数据组成,每行代表一条记录,行内数据通过列分隔符(默认为逗号 ,)分隔
"Name","Age","City"
"Alice",30,"New York"
"Bob",25,"Los Angeles"