你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
输入关键字进行搜索
搜索:
没有找到相关结果
bill
赞同来自: laoyang360 、zilanghuo
public class DocsStats implements Streamable, ToXContent { long count = 0; long deleted = 0; public DocsStats() { } public DocsStats(long count, long deleted) { this.count = count; this.deleted = deleted; } ...... }
laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net
赞同来自:
要回复问题请先登录或注册
2 个回复
bill
赞同来自: laoyang360 、zilanghuo
比如你往一个索引里插入了6条记录,删除了其中的一条。那么使用/_count,你会得到结果5条。
其实ES删除文档时不是真正删除,而只是会做个标记marker。所以索引里实际还存在6个文档。
什么时候真正删除?
ES用的是Luncene 管理索引。Luncene 会在满足一定条件时进行merge操作,其中会把所有标记了delete的文档真正的删除并合并segment。
什么时候deleted不为0?
如果删除了文档,但是还没有merge,比如这个索引,主本5条记录,实际18条数据。
执行
curl -XGET '192.168.3.100:9200/log_test/_stats?total&pretty'
你会发现:
强制做merge,将文档真正删除
POST /log_test/_optimize?only_expunge_deletes=true&wait_for_completion=true
你会发现文档数就变成了
5/15
参考源码
laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net
赞同来自: