searchresponse - prepareindex elasticsearch java




集成測試彈性搜索,計時問題,找不到文件 (2)

我有一個集成測試,在Java中,做一些事情的門面,其中是一個索引操作到彈性搜索數據庫。 這個彈性搜索數據庫已經非常天真地設置(實際上是開箱即用的東西,我在學習上)。 插入是完成,在那個門面,用java api,也很天真,例子幾乎完全複製從彈性搜索粘貼,如下所述: http : //www.elasticsearch.org/guide/reference/java-api /index_.html

之後,我測試了我的Facade是否正確地做了它的東西,其中一部分是檢查文檔是否真的插入到數據庫中。 我再次用彈性的方式描述他們的網站: http : //www.elasticsearch.org/guide/reference/java-api/search.html 。 我插入一個具有一定的有效載荷的文件,並以同樣的方式查找。

這個測試的​​工作原理是,如果我在調試中運行並且在Facade之後設置了一個斷點,那麼它會失敗,如果沒有放置這個斷點或者不能在調試中運行的話,將會失敗。 這讓我覺得我真的做錯了什麼。 此外,應用程序本身的工作(插入等),所以有可能是我的集成測試有問題,而不是我的複制粘貼代碼。

我想在索引操作返回之後,索引還沒有真正完成,或者有一些複製在搜索之前還沒有完成,或者類似的東西,但是它卻隱藏了我究竟是什麼以及我不能也可以解決它。 我並沒有嘗試在一個節點和一個碎片上放置彈性,也許這裡有什麼問題,但是我真的不知道究竟是什麼,所以我還沒有走這條路。 就像我說的,剛開始使用彈性,所以我可能會失去一些重要的和初學者的風格。 如果需要,我可以粘貼我的確切代碼,但正如我所說的,歸結為在測試中使用彈性搜索網站的兩個代碼片段。

卡斯帕


在調用索引操作之後,Elasticsearch不會立即使數據可用。 默認情況下會等待1秒以獲取更多數據。 但是,您可以通過調用refresh來強制elasticsearch立即使所有數據可用:

client.admin().indices().refresh(refreshRequest()).actionGet();

嘗試添加此操作後,您的外觀完成索引,然後再檢查結果。


無法找到refreshRequest方法。 我已經使用了這樣的東西,現在似乎正在工作。 我會做更多的測試

client.admin().indices().refresh(new RefreshRequest(indexName)).actionGet();

其中indexName是要刷新的索引的字符串名稱





elasticsearch