弹性转储如何使用偏移量?

2skhul33  于 2022-09-20  发布在  ElasticSearch
关注(0)|答案(2)|浏览(212)

当停止并重新启动时,它会尝试在偏移量之后执行。但出现了一个错误。

[执行命令]

nohup ./elasticdump --input=http://host/common --output=http://host/common --type=data --limit=1000 --offset=1000 &

[错误]

Error emed=>{“error”:{“root_cause”:[{“type”:“action_request_validation_exception”,“Reason”:“验证失败:1:滚动上下文中不允许使用[From];”}],“TYPE”:“ACTION_REQUEST_VALIDATION_EXCEPTION”,“Reason”:“验证失败:1:滚动上下文中不允许使用[From];”},“Status”:400}

如何使用偏移量?

8xiog9wr

8xiog9wr1#

从elasticump项目的注解中可以看到:
如果您使用的是Elasticearch 6.0.0或更高版本,则不再允许在scllContext中使用偏移量参数

为了防止这种情况(只要不越过10000 limit),您可以不使用offset参数(即没有滚动上下文),而是提供一个带有fromsize设置的搜索体,如下所示:

nohup ./elasticdump --input=http://host/common --output=http://host/common --type=data --searchBody='{"from": 1000, "size": 1000, "query": { "match_all": {} }}' &

更新:

如果您有超过10K的记录,并且弹性转储很容易在中途停止,我建议利用snapshot/restore feature将数据从一台服务器移动到另一台服务器。

huus2vyu

huus2vyu2#

您可以在命令中使用--Limit参数,Offset的使用很危险,因为它可以跳过n个记录,n是偏移量。

更多参考资料-https://github.com/elasticsearch-dump/elasticsearch-dump

例如:

elasticdump --input=domain/index --output "s3://bucket/file.json" --limit 1000

相关问题