提问:布和纸怕什么?

主节点的数据量,乘以父节点数,小于总数据量

匿名 | 发布于2018年05月08日 | 阅读数:2074

如图:当前索引为一个副本,一个节点。
当前节点为:1031多w,按理说总数据量为2062w数据,但为何总数据量显示为:2677多w,远远大于公式计算出来的数据?
TIM截图20180508163146.jpg
已邀请:

bill

赞同来自: laoyang360 zilanghuo

你的索引里发生过文档删除,就可能会出现上面的情况。

比如你往一个索引里插入了6条记录,删除了其中的一条。那么使用/_count,你会得到结果5条。
其实ES删除文档时不是真正删除,而只是会做个标记marker。所以索引里实际还存在6个文档。

什么时候真正删除?
ES用的是Luncene 管理索引。Luncene 会在满足一定条件时进行merge操作,其中会把所有标记了delete的文档真正的删除并合并segment。

什么时候deleted不为0?
如果删除了文档,但是还没有merge,比如这个索引,主本5条记录,实际18条数据。
索引.png


执行
curl -XGET '192.168.3.100:9200/log_test/_stats?total&pretty'
你会发现:
索引1.png


强制做merge,将文档真正删除
POST /log_test/_optimize?only_expunge_deletes=true&wait_for_completion=true

你会发现文档数就变成了
5/15

参考源码
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

赞同来自:

原因之一:写入数据时候,部分副本数据写入失败。

要回复问题请先登录注册