es-数据导出 elastice_dump 报错 parsing_exception The field [fields] is no longer supported

需求背景

  • 因为原有es负载过高,接口返回速度慢,定位原因如下
    • 可去重数据没有去重
    • 可清理的脏数据在入库时没有进行合理的过滤
    • 没有做历史数据索引清理
    • 冷热数据没有分离
  • 故需要对原有数据进行去重清洗,同时导出新版本es
    • 用python直接导出每次查询有10000上限,尽管可以调整配置文件或者用用游标 scroll解决,但是还是想不要造轮子了
    • 故选择用elasticdump

导出语句如下

elasticdump \
  --input=http://username:password@localhost:9200 \
  --input-index=user_index \
  --output=query.json 

报错如下

 Error: {"error":{"root_cause":[{"type":"parsing_exception","reason":"The field [fields] is no longer supported, please use [stored_fields] to retrieve stored fields or _source filtering if the field is not stored","line":1,"col":36}],"type":"parsing_exception","reason":"The field [fields] is no longer supported, please use [stored_fields] to retrieve stored fields or _source filtering if the field is not stored","line":1,"col":36},"status":400}

报错原因

  • elasticsearch版本是5.3,然后elasticdump的版本elasticdump 2.4.2
./node_modules/elasticdump/elasticdump.js

# 用这个语句去查es版本=5.3的就会报错提示你让你用stored_fields
self.options.searchBody = {"query": { "match_all": {} }, "fields": ["*"], "_source": true };
to

self.options.searchBody = {"query": { "match_all": {} }, "stored_fields": ["*"], "_source": true };

解决办法

  • 1,修改导出语句(建议)
elasticdump \
  --input=http://username:password@localhost:9200 \
  --input-index=user_index \
  --output=query.json 
  --searchBody='{"query": { "match_all": {} }, "stored_fields": ["*"], "_source": true }'
  • 2,修改./node_modules/elasticdump/elasticdump.js(不建议)
./node_modules/elasticdump/elasticdump.js
# 用这个语句去查es版本=5.3的就会报错提示你让你用stored_fields
self.options.searchBody = {"query": { "match_all": {} }, "fields": ["*"], "_source": true };
to
# 换成这个就好了
self.options.searchBody = {"query": { "match_all": {} }, "stored_fields": ["*"], "_source": true };

问题解决参考链接

github

elasticdump报错: FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 1: node::Abort() [node] 2: 0x8cd49c [node] 3: v8::Utils::ReportOOMFailure(char const*, bool) [node] 4: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [node] 5: v8::internal::Factory::NewRawTwoByteString(int, v8::internal::PretenureFlag) [node] 6: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::SlowScanJsonString<v8::internal::SeqTwoByteString, unsigned short>(v8::internal::Handle<v8::internal::String>, int, int) [node] 7: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::SlowScanJsonString<v8::internal::SeqTwoByteString, unsigned short>(v8::internal::Handle<v8::internal::String>, int, int) [node] 8: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::SlowScanJsonString<v8::internal::SeqOneByteString, unsigned char>(v8::internal::Handle<v8::internal::String>, int, int) [node] 9: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::SlowScanJsonString<v8::internal::SeqOneByteString, unsigned char>(v8::internal::Handle<v8::internal::String>, int, int) [node] 10: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::SlowScanJsonString<v8::internal::SeqOneByteString, unsigned char>(v8::internal::Handle<v8::internal::String>, int, int) [node] 11: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::SlowScanJsonString<v8::internal::SeqOneByteString, unsigned char>(v8::internal::Handle<v8::internal::String>, int, int) [node] 12: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::SlowScanJsonString<v8::internal::SeqOneByteString, unsigned char>(v8::internal::Handle<v8::internal::String>, int, int) [node] 13: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::SlowScanJsonString<v8::internal::SeqOneByteString, unsigned char>(v8::internal::Handle<v8::internal::String>, int, int) [node] 14: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::SlowScanJsonString<v8::internal::SeqOneByteString, unsigned char>(v8::internal::Handle<v8::internal::String>, int, int) [node] 15: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::SlowScanJsonString<v8::internal::SeqOneByteString, unsigned char>(v8::internal::Handle<v8::internal::String>, int, int) [node] 16: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::SlowScanJsonString<v8::internal::SeqOneByteString, unsigned char>(v8::internal::Handle<v8::internal::String>, int, int) [node] 17: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::SlowScanJsonString<v8::internal::SeqOneByteString, unsigned char>(v8::internal::Handle<v8::internal::String>, int, int) [node] 18: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::SlowScanJsonString<v8::internal::SeqOneByteString, unsigned char>(v8::internal::Handle<v8::internal::String>, int, int) [node] 19: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::ScanJsonString<false>() [node] 20: v8::internal::JsonParser<false>::ParseJsonValue() [node] 21: v8::internal::JsonParser<false>::ParseJsonObject() [node] 22: v8::internal::JsonParser<false>::ParseJsonValue() [node] 23: v8::internal::JsonParser<false>::ParseJsonObject() [node] 24: v8::internal::JsonParser<false>::ParseJsonValue() [node] 25: v8::internal::JsonParser<false>::ParseJsonArray() [node] 26: v8::internal::JsonParser<false>::ParseJsonValue() [node] 27: v8::internal::JsonParser<false>::ParseJsonObject() [node] 28: v8::internal::JsonParser<false>::ParseJsonValue() [node] 29: v8::internal::JsonParser<false>::ParseJsonObject() [node] 30: v8::internal::JsonParser<false>::ParseJsonValue() [node] 31: v8::internal::JsonParser<false>::ParseJson() [node] 32: v8::internal::Builtin_JsonParse(int, v8::internal::Object**, v8::internal::Isolate*) [node] 33: 0x384a51e8697d 增加: export NODE_OPTIONS=--max_old_space_size=4096
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值