使用弹性搜索批量索引

时间:2016-03-07 10:01:07

标签: elasticsearch

到目前为止,我正按文档将数据索引到弹性文档,现在随着数据开始增加,它变得非常缓慢而不是优化方法。所以我正在寻找一个批量插入的东西,发现了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"}

2 个答案:

答案 0 :(得分:8)

您的数据格式不正确:

  1. 第一行后不需要逗号
  2. 您错过了第一行的结束 private void addDownloadButton() { add(new DownloadModelLink("file", new AbstractReadOnlyModel<File>() { private static final long serialVersionUID = 1L; @Override public File getObject() { return service.createFile(); } })); }
  3. 您的第二行中间有一个结束},您也需要将其删除。
  4. 为批量插入格式化数据的正确方法如下所示:

    }

    这样可行。

    <强>更新

    在Chrome上使用Postman看起来像这样。确保在第2行之后添加新行:

    enter image description here

答案 1 :(得分:0)

使用elasticsearch 7.9.2

为了发送批量更新,我收到了以下新行的错误

更新失败,没有新行

enter image description here

这很奇怪,但是在所有操作的最后一行中添加了新行之后,它与邮递员一起正常工作,请注意以下屏幕截图中的第5行

在邮递员的所有命令的最后一个命令中添加换行符后,批量更新成功

enter image description here