簡體   English   中英

如何追蹤Elasticsearch批量導入失敗的原因?

[英]How to trace cause of failing elasticsearch bulk import?

我目前正在嘗試將超過600,000個文檔導入我的Elasticsearch服務器。

我可以使用javascript客戶端毫無問題地導入10,000種產品,但是所有這些問題我都遇到了。

ELASTIC_HOST="hostname:9200" node import.js --trace_debug_json=true
buffer.js:382
    throw new Error('toString failed');
    ^

Error: toString failed
    at Buffer.toString (buffer.js:382:11)
    at Object.fs.readFileSync (fs.js:461:33)
    at Object.Module._extensions..js (module.js:441:20)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:311:12)
    at Function.Module.runMain (module.js:467:10)
    at startup (node.js:134:18)
    at node.js:961:3

import.js是這樣組成的。 被截斷,因為總共有1281687行。

if (!process.env.ELASTIC_HOST) throw new Error('set ELASTIC_HOST (example: "127.0.0.1:9200")');
var elasticsearch = require('elasticsearch');
var client = new elasticsearch.Client({host: process.env.ELASTIC_HOST ,log:'trace'});
client.bulk({body: [
  { index: { _index: 'products', _type: 'product', _id: 12800223350 } },
  { slug: '12800223350', mfrCatNum: "945R4", name: "Heavy Duty Battery", fulltechDesc: "1 Cell; 6 V; Connection Type Screw Terminal; Used For Lantern; Heavy Duty", invoiceDescription: "6V HD Lantern Battery" , twokDesc: "1 Cell; 6 V; Connection Type Screw Terminal; Used For Lantern; Heavy Duty" },

  /* more documents here */

  { index: { _index: 'products', _type: 'product', _id: 754473940287 } },
  { slug: '754473940287', mfrCatNum: "B30-R10000-KB-16", name: "Heavy-Duty Print Ribbon", fulltechDesc: "Print Ribn", mfrDescription: "B30 Series Heavy-Duty Print Ribbon - Black/Blue", invoiceDescription: "Print Ribn" },
]}, function(err, resp) {
  console.log(err);
});

如何跟蹤錯誤的根源,以便可以上載所有文檔,從而可以實際評估當前需求的elasticsearch?

您遇到一個錯誤,告訴您您正在嘗試將太多數據存儲到緩沖區中(當然,這是因為您的JS客戶端會將批量數組連接到一個巨大的字符串緩沖區中),這是間接通過巨大的批量調用進行的。 如果有內存,則最大緩沖區大小為256MB,因此,如果您有600K文檔,則可能超出該限制。

我建議將您的通話分為多個通話...瀏覽數據,您也許可以在兩個通話中執行此操作,也許是三個。 試一試,讓我們知道如何進行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM