到目前为止,我一直在按文档将数据索引到弹性文档,现在随着数据开始增加,它变得非常慢,并且不是一种优化的方法。所以我正在寻找批量插入的东西并找到了 Elastic Bulk API。从他们官方网站的文档中我感到困惑。我使用的方法是将数据作为 WebRequest 传递并在弹性服务器中执行它们。因此,在创建批量插入请求时,API 希望我们形成一个模板,例如
localhost:9200/_bulk as URL and
{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "1" } }
{ "field1" : "value1" }
索引 id 为 1 且 field1 值为值 1 的文档。此外,API 建议以 JSON 形式发送数据(不美观,以保持非转义字符等)。因此,要传递具有多个属性的多个文档,我如何构建我的数据。
我在 FF RestClient 中尝试了这样的操作,其中 POST 和标头为 JSON ,但是 RestClient 抛出了一些错误,我知道它不是有效的 JSON
{ "index" : { "_index" : "indexName", "_type" : "type1", "_id" : "111" },
{ "Name" : "CHRIS","Age" : "23" },"Gender" : "M"}
您的数据格式不正确:
- 第一行后面不需要逗号
- 你错过了一个结束语
}
在第一行
- 你有一个结束语
}
在第二行的中间,您也需要将其删除。
格式化数据以进行批量插入的正确方法如下所示:
curl -XPOST localhost:9200/_bulk -d '
{ "index" : { "_index" : "indexName", "_type" : "type1", "_id" : "111" }}
{ "Name" : "CHRIS","Age" : "23" ,"Gender" : "M"}
-H 'Content-Type: application/x-ndjson'
这会起作用。
UPDATE
在 Chrome 上使用 Postman 看起来像这样。确保在第 2 行之后添加新行:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)