集成测试弹性搜索,计时问题,未找到文档

Kas*_*per 14 java elasticsearch

我在java中有一个外观的集成测试,它做了一些事情,其中​​包括对弹性搜索数据库的索引操作.这个弹性搜索数据库已经非常天真地设置(开箱即用的东西实际上,我在学习fase).插入是在这个外观内部完成的,使用java api,也非常天真,示例几乎完全从弹性搜索中复制粘贴,如下所述:http://www.elasticsearch.org/guide/reference/java-api /index_.html.

然后我测试我的外观是否正确地完成了它的东西,其中一部分是检查该文档是否确实已插入数据库中.我再次按照弹性在其网站上描述的方式进行操作:http://www.elasticsearch.org/guide/reference/java-api/search.html.我插入一个带有特定负载的文档,并以相同的方式查找它.

如果我在调试中运行并在facade之后设置了一个断点,那么这个测试是有效的,但是如果我没有放置这个断点或者没有在调试中运行它会失败并且没有找到结果.这让我觉得我真的做错了什么.此外,应用程序本身工作(插入等),因此我的集成测试可能有问题,而不是我的复制粘贴代码.

我想在索引操作返回之后索引还没有真正完成,或者有一些复制在搜索之前没有完成,或类似的东西,但它让我想到了什么,我似乎无法让它解决.我没有尝试将弹性放在一个节点和一个碎片上,也许那里有一些错误,但我真的没看到究竟是什么,所以我还没走那条路.就像我说的,刚刚开始使用弹性,所以我可能会遗漏一些关键和初学者风格的东西.如果需要,我可以粘贴我的确切代码,但就像我说的那样归结为在测试中使用来自弹性搜索站点的两个代码片段.

卡斯帕

imo*_*tov 22

调用索引操作后,Elasticsearch不会立即使数据可用.默认情况下,等待1秒即可获得更多数据.但是,您可以通过调用强制elasticsearch立即使所有数据可用refresh:

client.admin().indices().refresh(refreshRequest()).actionGet();
Run Code Online (Sandbox Code Playgroud)

在检查最终结果之前,在完成索引之后尝试添加此操作.