gpt4 book ai didi

java - 执行 Elasticsearch Reindex in place 操作时出现服务器错误

转载 作者:行者123 更新时间:2023-12-01 19:42:15 24 4
gpt4 key购买 nike

我正在使用AWS Elasticsearch服务(版本6.3)。我有兴趣在将数据从 current_index 重新索引到 new_index 时更改映射。我并不是想从旧的 Elasticsearch 集群升级到新的集群。我的 current_indexnew_index 都位于同一个 Elasticsearch 6.3 集群上。
我正在尝试按照 Elastic documentation 中的信息执行就地重建索引操作
我的索引包含大约 25 万个可搜索文档。当我使用curl POST _reindex 请求时,

curl -X POST "aws_elasticsearch_endpoint/_reindex" -H 'Content-Type: application/json' -d'
{
"source": {
"index": "current_index"
},
"dest": {
"index": "new_index"
}
}
'

Elasticsearch 启动重新索引过程(我通过执行 GET/_cat/indices?v 来验证这一点),最终得到 curl: (56) Unexpected EOF 错误。 Reindex 操作实际上工作得很好。大约 2 小时后,new_index 中的 doc.countcurrent_index 匹配,并且 status 变为绿色


如果我从 Java POST _reindex,我会收到此错误:

java.net.SocketException: Unexpected end of file from server

只有当我的索引中的文档大小很小(我尝试使用类似 1k 个可搜索文档)时,Reindex API 才会按照指定成功返回 here

最佳答案

这是因为响应需要很长时间才能返回,并且curl超时。在小型数据集上,响应会在超时之前返回,这就是您收到响应的原因。

当curl超时时,重新索引仍在进行中,您仍然可以使用此命令查看重新索引的执行情况:

GET _tasks?actions=*reindex&detailed=true

您还可以添加 ...?wait_for_completion=false到你的curl命令。 ES 将为您的重新索引操作创建一个后台任务。 curl 命令将提前终止并返回一个 taskId,然后您可以使用 Task API 定期检查重新索引的状态。

GET .tasks/task/<taskId>

另请注意,在这种情况下,当任务完成后,您还需要从 .tasks 索引中删除该任务,ES 不会为您执行此操作。

关于java - 执行 Elasticsearch Reindex in place 操作时出现服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54954538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com