私はElasticsearchクラスタから特定の種類のすべてのドキュメントを削除するカールリクエストをトリガーするためにシェルスクリプトを使用しています。成功すると、Logstashが起動し、削除された種類の文書を再インデックス化しようとします。
printf "\n%s\n" "Sending delete request..."
RESPONSE=$(curl --max-time 600 -XPOST
"https://mycluster.com:9243/locations/ca/_delete_by_query?conflicts=proceed" -H
'Content-Type: application/json' -d' { "query": { "match_all": {} } }'
--user user:password)
if [[ $RESPONSE == *"deleted"* ]]; then
echo $RESPONSE
printf "\n%s\n" "Delete successful, starting Logstash..."
cd /home/denroot/EP-logstash && bin/logstash -f /home/denroot/EP-
logstash-configs/locations/create/california.config
else
echo $RESPONSE
printf "\n%s\n" "Delete failed, shutting down..."
fi
私が経験している問題は、この特定の種類の文書が500万を超えるということです。 5分が経過する前にElasticsearch削除操作は完了せず、カール要求は終了コード0で終了します。これが発生するのを防ぐために--max-timeを使用できないようです。通常、Elasticsearch の削除操作が完了すると、制御フローロジックが正常に動作するために必要な JSON 応答本文を再送信します。この5分のシャットダウンの問題を防ぐのを手伝ってくれてありがとう。これに対する先例が見つからないようです。
答え1
スクリプトは10分後に終了します。
制限を解除する最大時間を増やすか削除してください。
サーバー側で5分のタイムアウトが指定されている場合は、予想される出力/終了コードを受け取るまで、カールコマンドを複数回実行できます。