我试图将一个对象类型的字段的数据复制到另一个嵌套类型的字段。我尝试使用无痛脚本和ElasticSearch按查询更新进行复制。但我花了大约48小时复制了840万数据。有什么方法可以加快此操作吗
这是url localhost:9200/myindex/_update_by_query?conflicts=proceed&requests_per_second=50
,主体为
"query": {
"match_all": {}
},
"script": {
"inline": "ctx._source.myfield_copy = ctx._source.myfield;"
}
}```
I want to speed up this operation
1条答案
按热度按时间4xy9mtcn1#
通过指定
requests_per_second
,可以限制操作。由于默认的bath大小是1000,并且承认50条记录的写入时间是100ms(假设,您的里程可能会有所不同),因此我们有
所以你基本上在每一批之间等待了19.9秒,这可能就是为什么要花这么长时间的原因。只要完全删除
requests_per_second
,这应该已经有很大帮助了。如果您只是将一个字段复制到另一个字段中,另一个性能改进是不使用脚本,而是使用接收管道
然后通过引用该管道简单地运行按查询更新: