我們使用ElasticSearch和Rails應用程序中的Tire gem。對於我們的集成測試,我們刪除並重新創建沿ElasticSearch異步刪除? 200在刪除Rails應用程序中的索引之後
Foo.index.delete
Foo.create_elasticsearch_index
凡Foo
包括Tire::Model::Persistence
行,每例前的指數,一些東西。但是當我們在CI上運行我們的測試套件時,我們開始時常缺少索引錯誤。我繼續啓用調試,然後我發現在日誌中以下內容:
# 2013-10-04 09:25:05:839 [DELETE] ("test_index")
#
curl -X DELETE http://some-server:9200/test_index
# 2013-10-04 09:25:05:840 [200]
#
# {
# "ok": true,
# "acknowledged": true
# }
# 2013-10-04 09:25:05:852 [HEAD] ("test_index")
#
curl -I "http://some-server:9200/test_index"
# 2013-10-04 09:25:05:852 [200]
正如你所看到的,我得到了刪除請求200 OK響應,但後來當輪胎做一個HEAD請求,看是否該索引在創建之前就已經存在,它仍然會返回200而不是404.這種情況是隨機發生的,大多數時候它的工作正常,但是在測試套件中的某個時刻它會失敗。
我試圖等待刪除和創建操作之間的黃色狀態,但它沒有奏效。所以我的問題在於,刪除索引操作是否以某種方式異步? (在ES文檔上找不到任何關於這個的東西)。有什麼方法可以等待索引被刪除嗎? (由於黃色狀態不起作用)。
編輯:謝謝@PinnyM的澄清。所以所有的操作都通過HTTP API are indeed asynchronous。所以現在仍然存在的問題是,我如何等待索引被刪除,以便我可以再次創建它?
所有到ES的HTTP操作都是異步的,請參閱http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-http.html – PinnyM
@PinnyM謝謝!編輯問題 – julioolvr