当我在ES中索引文档时,我试图在刷新间隔内访问同一文档并且搜索没有返回结果。是否有实时GET支持,无论"刷新率如何,都可以获得一次索引的文档。的索引。我尝试将refresh_interval减少到500毫秒而不是1秒,但是我的搜索查询甚至在500毫秒之前就已经发生了,并且进一步减少它不是一个好主意。
答案 0 :(得分:4)
索引文档后,您可以立即获取它而无需等待刷新间隔。
因此,如果您将这样的新文档编入索引
POST index/type/1
{ "name": "John Doe" }
您无需等待
即可立即获取GET index/type/1
但是,如果搜索,则需要等待刷新间隔传递,以便检索新文档或调用刷新API。
为了完整起见,值得一提的是,在建立索引时,您还可以选择refreshing the shards immediately,通过传递refresh=true
参数,如下所示。但请注意,这可能会对性能产生不良影响,因此应谨慎使用。
POST index/type/1?refresh=true
{ "name": "John Doe" }
另外值得注意的是,在ES 5中,您可以选择在从创建调用返回之前告知ES wait for a refresh:
POST index/type/1?refresh=wait_for
{ "name": "John Doe" }
在这种情况下,一旦POST请求返回,您就可以保证新文档在下一次搜索调用中可用。