elasticsearch,delay,Unit Testing,elasticsearch,Delay" /> elasticsearch,delay,Unit Testing,elasticsearch,Delay" />

Unit testing 单元测试时如何处理弹性搜索延迟?

Unit testing 单元测试时如何处理弹性搜索延迟?,unit-testing,elasticsearch,delay,Unit Testing,elasticsearch,Delay,elasticsearch在请求为文档编制索引以使文档成为可搜索文档方面存在一些延迟。我想知道如何在单元测试中处理这个问题,例如,首先索引一个文档,然后检查它是否真的被索引了。现在我只需使用Thread.sleep()调用来延迟一段时间(我使用的是一个普通的junit类),比如说2秒钟。这样行吗?或者有更好的解决方案?您可以在写入elasticsearch后刷新索引 通过这样做 $ curl -XPOST 'http://localhost:9200/index1,index2/_refresh

elasticsearch在请求为文档编制索引以使文档成为可搜索文档方面存在一些延迟。我想知道如何在单元测试中处理这个问题,例如,首先索引一个文档,然后检查它是否真的被索引了。现在我只需使用Thread.sleep()调用来延迟一段时间(我使用的是一个普通的junit类),比如说2秒钟。这样行吗?或者有更好的解决方案?

您可以在写入elasticsearch后刷新索引

通过这样做

$ curl -XPOST 'http://localhost:9200/index1,index2/_refresh'
RefreshAPI允许显式刷新一个或多个索引,使 自上次刷新以来执行的所有操作都可用于搜索。 (近)实时功能取决于所使用的索引引擎。对于 例如,内部函数需要调用refresh,但是 默认情况下,定期安排刷新

使用java api

 client.admin().indices().prepareRefresh().execute().actionGet()
使用JavaScript客户端:

client.indices.refresh({index : 'myIndex'});

我已经用嵌入式ES节点和JUnit测试(Spock)检查了它,它可以工作:)很好!