如何在进行单元测试时处理弹性搜索延迟?

D_S*_*ite 8 unit-testing delay elasticsearch

弹性搜索从请求索引文档到文档变得可搜索有一些延迟.我想知道如何在单元测试中处理这个问题,例如,首先索引一个文档,然后检查它是否真的被编入索引.现在我只是使用Thread.sleep()调用来延迟一段时间(我使用普通的junit类),比如2秒.这个可以吗?还是有更好的解决方案?

pro*_*mer 8

您可以在写入elasticsearch后刷新indeces.

通过做,

$ curl -XPOST 'http://localhost:9200/index1,index2/_refresh'
Run Code Online (Sandbox Code Playgroud)

刷新API允许显式刷新一个或多个索引,使得自上次刷新以来执行的所有操作都可用于搜索.(近)实时功能取决于所使用的索引引擎.例如,内部调用需要刷新,但默认情况下会定期调度刷新.

请参阅@Elasticsearch网站

使用java api,

 client.admin().indices().prepareRefresh().execute().actionGet()
Run Code Online (Sandbox Code Playgroud)

使用JavaScript客户端:

client.indices.refresh({index : 'myIndex'});
Run Code Online (Sandbox Code Playgroud)