即使可以强制ES刷新自身,您也已经正确注意到它可能会损害性能。解决此问题以及人们经常做的事情(包括我自己)的解决方案是给人一种 实时 的
错觉 。最后,这仅是用户体验的挑战,而不是真正的技术限制。
重定向到用户列表时,您可以人为地将刚创建的新记录包括在用户列表中,就像该记录是ES本身返回的一样。没有什么可以阻止您这样做的。而且,当您决定刷新页面时,ES会正确返回新的用户记录,并且没人在乎该记录的来源,此时用户所关心的只是他想查看新记录,他刚刚创建,只是因为我们习惯于顺序思考。
实现此目的的另一种方法是,重新加载一个空的用户列表框架,然后通过Ajax或其他异步方法,检索用户列表并显示它。
还有另一种方法是在UI上提供视觉提示/线索,表明在后台发生了某些事情,并且预计很快就会有更新。
最后,一切归结为不是让用户惊讶,而是给他们足够的线索,以了解发生了什么,正在发生什么以及他们仍应该期望发生什么。
更新 :
出于完整性考虑,此答案早于ES5,后者引入了一种方法,以确保在搜索索引或返回错误代码后文档可见之前,索引调用不会返回。通过
?refresh=wait_for在索引数据时使用,可以确定ES响应时,新数据将被索引。



