如何使用 Elasticsearch Node.js 客户端"ingest" base64 编码的文档/附件



Elasticsearch Node.js 客户端:如何摄取 base64 编码的文档。

我已经使用 Kibana 成功创建了一个索引("描述"(和一个管道("附件"(来摄取 base64 编码的文档。

使用 Elasticsearch Node.js 客户端,我调用 client.index(( 来处理 base64 编码的文档,但返回了"ResponseError: Exception"。

代码包含在此问题中。

// KIBANA
PUT /descriptions
PUT _ingest/pipeline/attachment
{
  "description" : "Extract attachment information",
  "processors" : [
    {
      "attachment" : {
        "field" : "data"
      }
    }
  ]
}
// NODE.JS code
// The 'data' variable is base64 encoded
function indexBase64Data(data) {
    console.log(" ");
    console.log("calling client.index()");
    const index = client.index({
        id: 101,
        index: "descriptions",
        pipeline: "attachment",
        body: {
            "data": data
        }
    });
    index.then(() => {
        console.log("Index was successful...");
    },
    (error) => {
        console.error("ERROR in client.index: " + error);
    })
}
// ERROR from client.index() is: "ResponseError: Exception"

我预计 base64 编码的文档将由 Elasticsearch 索引,但我收到此异常错误:"响应错误:异常">

也许client.index((不是正确的调用。如果是这样,我想就如何使用Elasticsearch Node.js客户端摄取附件提出建议。

答案是 base64 编码数据具有必须删除的前缀:

data:application/octet-stream;base64,Ym9vazoxfGFiY3xkZWYKYm9vazoyfE1ha2luZyB0aGUgTW9kZXJuIFdvcmxkfFZhY2xhdiBTbWlsCmJvb2s6M3xUYXAgRGFuY2luZyB0byBXb3JrOiBXYXJyZW4gQnVmZmV0fENhcm9sIExvb21pcwpib29rOjZ8VGhlIEhlYWRzcGFjZSBHdWlkZSB0byBNZWRpdGF0aW9uIGFuZCBNaW5kZnVsbmVzc3xBbmR5IFB1ZGRpY29tYmUKYm9vazo3fDIxIExlc3NvbnMgZm9yIHRoZSAyMXN0IENlbnR1cnl8WXV2YWwgTm9haCBIYXJhcmkKYm9vazo4fEJhZCBCbG9vZHxKb2huIENhcnJleXJvdQpib29rOjl8QXJteSBvZiBOb25lOiBBdXRvbm9tb3VzIFdlYXBvbnMgYW5kIHRoZSBGdXR1cmUgb2YgV2FyfFBhdWwgU2NoYXJyZQpib29rOjEwfEVkdWNhdGVkfFRhcmEgV2VzdG92ZXIK

删除前缀"data:application/octet-stream;base64,",并且代码有效。

最新更新