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

时间:2014-08-13 03:12:22

标签: unit-testing elasticsearch delay

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

1 个答案:

答案 0 :(得分:8)

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

通过这样做,

$ curl -XPOST 'http://localhost:9200/index1,index2/_refresh'
  

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

See @Elasticsearch website

使用java api,

 client.admin().indices().prepareRefresh().execute().actionGet()

使用JavaScript客户端:

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