2017-08-01 74 views
0

我是基於cshapes數據集批量索引到包含國家/地區形狀的Elasticsearch文檔(files here)。Elasticsearch如何檢查批量索引請求的狀態?

地形在"geometry":{"type":"MultiPolygon"中有很多點,批量請求需要很長時間才能完成(有時不完成,這是一個單獨的且已經報告的問題)。

由於客戶端超時(我使用官方ES node.js),我想有一種方法來檢查大容量請求的狀態,而不必使用巨大的超時值。

我想要的是狀態,如主動/正在運行,已完成或已中止。我想通過查詢批處理中的單個文檔不會告訴我請求是否被中止。

這可能嗎?

回答

0

我不確定這是否正是您要查找的內容,但可能會有所幫助。每當我對我的集羣正在做什麼感到好奇時,我會查看tasks API

任務API顯示當前在羣集上運行的所有任務。它會爲您提供有關各個任務的信息,例如任務ID,開始時間和運行時間。這裏的命令:

curl -XGET http://localhost:9200/_tasks?group_by=parents | python -m json.tool

+0

我認爲這是最接近我可以用來讀取我的請求的狀態,特別是使用'curl -XGET'http:// localhost:9200/_tasks?actions = indices:data/write/bulk *&detailed''並嘗試解析哪些請求仍在等待處理。 –

0

Elasticsearch沒有提供檢查正在進行的Bulk請求文檔參考here的狀態的方法。

首先,檢查您的請求是否以較小的輸入成功,以便您知道提出請求的方式沒有問題。其次,嘗試將數據分成更小的塊,並在它們上並行調用Bulk API。

你也可以嘗試更高的價值request_timeout,但我想這是你不想做的事情。

+0

謝謝https://stackoverflow.com/users/1517410/ketan-vijayvargiya,我嘗試了幾個請求,他們的工作,所以我猜的語法是正確的。我可以嘗試一個較小的批量,但我認爲ES有一個問題,我在這裏報告:https://github.com/elastic/elasticsearch/issues/23670,所以我正在尋找一種方法來檢測。 –

0

只是一個側面說明暗示爲什麼你的請求可能需要大量的時間(除非你只是在索引單個大容量運行太多)。如果您已爲地理形狀配置了自己的precision,還要確保您正在配置distance_error_pct,否則不會出現錯誤,從而導致文檔中含有大量需要大量時間索引的條款。

+0

distance_error_pct對我的批量索引非常有用,雖然它不能解決問題,但它有助於使其不太可能出現。 –