如何批量发送请求? Elasticsearch

时间:2019-01-15 09:30:06

标签: javascript elasticsearch request bulk request-promise

我有一个带有数据的对象,我想将此数据发送到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)

如何正确发送批量邮件?

批量输入string enter image description here

1 个答案:

答案 0 :(得分:0)

不确定是否对您有帮助,但是here我发现_bulkJSON.stringify也有类似的问题。

答案是:

  

看起来您的有效载荷中的元字符没有得到   翻译成换行符。如果您改用   elasticsearch.js客户,它将为您处理。