在ES中, 要保证被索引的文档能够立即被搜索到, 有两种方法:_refresh 或者_flush。
那么二者的区别是什么呢?要搞懂这个问题, 就需要对ES中文档的索引过程有个了解。
我们知道ES的索引数据是写入到磁盘上的。但这个过程是分阶段实现的,因为IO的操作是比较费时的。
当一个文档进入ES的初期, 文档是被存储到内存里的,默认经过1s之后, 会被写入文件系统缓存,这样该文档就可以被搜索到了,注意,此时该索引数据被没有最终写入到磁盘上。如果你对这1s的时间间隔还不满意, 调用_refresh就可以立即实现内存->文件系统缓存, 从而使文档可以立即被搜索到。