我有一个带有数据的对象,我想将此数据发送到elasticsearch容器
for(let key in params)
{
bulk.push(JSON.stringify({
index: {
_id: params[ key ][ 'id' ],
_type: 'id',
_index: 'geo'
}
}));
bulk.push(JSON.stringify(params[key]));
}
let bulks = bulk.join("\n") + "\n";
我提出了请求
let cat = request(
{
'method' : 'PUT',
'uri' : 'http://dev4.int10h.net:40024/_bulk',
'body' : bulks ,
'json' : true,
'headers':
[
'Content-Type: application/x-ndjson'
],
'agent' : false
}
);
但有错误
未处理的拒绝StatusCodeError:400-{“错误”:{“ root_cause”:[{“ type”:“ illegal_argument_exception”,“原因”:“批量请求必须由换行符[\ n]”}终止,“ type”:“ illegal_argument_exception”,“原因”:“批量请求必须以换行符[\ n]”},“ status”:400 }终止 在新的StatusCodeError(/usr/lib/node_modules/request-promise/node_modules/request-promise-core/lib/errors.js:32:15) 在Request.plumbing.callback(/usr/lib/node_modules/request-promise/node_modules/request-promise-core/lib/plumbing.js:104:33) 在Request.RP $ callback [作为_callback](/usr/lib/node_modules/request-promise/node_modules/request-promise-core/lib/plumbing.js:46:31) 在Request.self.callback(/usr/lib/node_modules/request/request.js:185:22) 在Request.emit(events.js:182:13) 应要求。 (/usr/lib/node_modules/request/request.js:1161:10) 在Request.emit(events.js:182:13) 在IncomingMessage。 (/usr/lib/node_modules/request/request.js:1083:12) 在Object.onceWrapper(events.js:273:13) 在IncomingMessage.emit(events.js:187:15) 在endReadableNT(_stream_visible.js:1098:12) 在process.internalTickCallback(internal / process / next_tick.js:72:19)
如何正确发送批量邮件?
答案 0 :(得分:0)
不确定是否对您有帮助,但是here我发现_bulk
和JSON.stringify
也有类似的问题。
答案是:
看起来您的有效载荷中的元字符没有得到 翻译成换行符。如果您改用 elasticsearch.js客户,它将为您处理。