因为只要索引处于open状态,就会占用内存+磁盘;
如果将索引close,只会占用磁盘
Curl -XPOST ‘hadoop01:9200/index/_close’
------
在es中删除文档,数据不会马上在硬盘上删除,而是在es索引中产生一个.del 文件;
并且es在检索过程中也会把.del文件进行检索(因为都是当前下的索引片段),然后es在把标记有.del的文档进行过滤;【这并没有提高检索的效率】
实际上如果当前有大量的.del文件,我们应该让.del真正的从es中抹去,这样就优化了检索的效率,不至于检索后在过滤;
什么时候真正删除.del文件?
在索引合并阶段就会删除.del文件,所以可以执行以下命令清楚.del文件:
Curl -XPOST ‘http://hadoop01:9200/my_index/_forcemerge?only_expunge_deletes=true’
Java客户端操作:
Client.admin().indices().prepareForceMerge(“my_index”).setOnlyExpungeDeletes(true).get();