我在 java 中有一个外观的集成测试,它做了一些事情,其中包括对弹性搜索数据库的索引操作。这个弹性搜索数据库的设置非常天真(实际上是开箱即用的东西,我正在学习中)。插入在该外观内完成,使用 java api,也非常天真,示例几乎完全从弹性搜索中复制粘贴,如下所述:http ://www.elasticsearch.org/guide/reference/java-api /index_.html。
之后我测试我的外观是否正确地完成了它的工作,其中一部分是检查该文档是否真的被插入到数据库中。我再次按照弹性在他们的网站上描述的方式这样做:http ://www.elasticsearch.org/guide/reference/java-api/search.html 。我插入一个具有特定有效负载的文档并以相同的方式查找它。
如果我在调试中运行并在外观完成后设置断点,则此测试有效,但如果我不放置此断点或不在调试中运行,它会失败并且找不到结果。这让我觉得我真的做错了什么。此外,应用程序本身可以工作(插入等),所以我的集成测试可能有问题,而不是我复制粘贴的代码。
我猜在索引操作返回之后,索引还没有真正完成,或者在搜索之前有一些复制没有完成,或者类似的事情,但它让我不知道究竟是什么,我似乎不能解决它。我还没有尝试将弹性放在一个节点和一个分片上,也许那里有问题,但我真的不知道到底是什么,所以我还没有走那条路。就像我说的,刚开始使用弹性,所以我可能会遗漏一些重要的和初学者风格的东西。如果需要,我可以粘贴我的确切代码,但就像我说的那样,它归结为在测试中使用来自弹性搜索站点的两个代码片段。
卡斯帕