Elasticsearch 如何检查批量索引请求的状态?

Elasticsearch how to check for a status of a bulk indexing request?

我正在对包含国家/地区形状的 Elasticsearch 文档进行批量索引(files here), based on the cshapes 数据集。

geoshapes在"geometry":{"type":"MultiPolygon"中有很多点,批量请求需要很长时间才能完成(有时无法完成,这是一个单独且已报告的问题)。

由于客户端超时(我使用的是官方ES node.js),我希望有一种方法可以检查批量请求的状态,而不必使用巨大的超时值。

我想要的状态是 active/running、已完成或已中止。我想仅通过查询批处理中的单个文档不会告诉我请求是否已中止。

这可能吗?

Elasticsearch 不提供一种方法来检查正在进行的 Bulk 请求的状态 - 文档参考 here

首先,使用较小的输入检查您的请求是否成功,这样您就知道您发出请求的方式没有问题。其次,尝试将数据分成更小的块并并行调用 Bulk API。

您也可以尝试使用更高的 request_timeout 值,但我想这是您不想做的事情。

我不确定这是否正是您要查找的内容,但可能会有所帮助。每当我对我的集群在做什么感到好奇时,我都会查看 tasks API

任务 API 向您显示集群上当前 运行 的所有任务。它将为您提供有关各个任务的信息,例如任务 ID、开始时间和 运行 时间。这是命令:

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

只是一个旁注提示,说明为什么您的请求可能会花费很多时间(除非您只是在单个批量中索引太多 运行)。如果您已经为地理形状配置了自己的 precision,还要确保您正在配置 distance_error_pct,否则不会假定错误,导致文档包含大量术语,需要花费大量时间进行索引。