【问题标题】:ElasticSearch JSON file import (Bulk API)ElasticSearch JSON 文件导入(批量 API)
【发布时间】:2015-08-11 04:20:21
【问题描述】:

我在 StackOverflow 上看到了一些与此类似的帖子,但我仍然不清楚如何将带有 JSON 文档的大文件索引到 ElasticSearch 中;我收到如下错误:

{"error":"ActionRequestValidationException[Validation Failed: 1: index is missing;2: type is missing;]","status":400}

{"took":231,"errors":false,"items":[{"index":{"_index":"test","_type":"type1","_id":"1","_version":7,"status":200}}]

我有一个大小约为 2Gb 的 JSON 文件,这是我真正想要导入的文件。但首先,为了了解 Bulk API 的工作原理,我创建了一个只有一行实际数据的小文件:

testfile.json

{"index":{"_id":"someId"}} \n
{"id":"testing"}\n

我从另一篇关于 SO 的帖子中得到这个。我知道第一行是标题,我也知道第一行中的“索引”是要发送到 ES 的命令;但是,这仍然不起作用。有人可以给我一个工作示例并清楚地说明如何将 JSON 文件导入 ES 吗?

谢谢!

【问题讨论】:

    标签: json elasticsearch file-import


    【解决方案1】:

    以下示例来自 elasticsearch 文档: https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html?q=bulk

    { "index" : { "_index" : "test", "_type" : "type1", "_id" : "1" } }
    { "field1" : "value1" }
    { "delete" : { "_index" : "test", "_type" : "type1", "_id" : "2" } }
    { "create" : { "_index" : "test", "_type" : "type1", "_id" : "3" } }
    { "field1" : "value3" }
    { "update" : {"_id" : "1", "_type" : "type1", "_index" : "index1"} }
    { "doc" : {"field2" : "value2"} }
    

    所以第一行告诉 elastic 将第二行的文档索引到索引测试中,键入 type1 和 _id 1。它将使用 field1 索引文档。如果它们都转到相同的索引和类型,您可以更改 url。检查示例链接。

    在第三行你看到一个删除操作的例子,这个文档不需要第四行的文档。

    小心处理非常大的文档,2 Gb 可能太大了。它需要先发送到弹性,然后将其加载到内存中。所以要发送的记录数量是有限制的。

    【讨论】:

    • 这是我在本例中使用前两行时得到的错误:{"took":36,"errors":false,"items":[{"index":{" _index":"test","_type":"type1","_id":"1","_version":8,"status":200}}]} 我仍然不清楚为什么包含“field1”和“value1”的文档有一个“_index”、“_type”和“_id”字段。
    • 你能用你用来执行批量的代码更新你的问题吗?你用 curl 还是别的什么?
    • 嗨捷特罗;显然这实际上不是错误 - 这是正确的输出!但是,我不知道该输出是什么意思。我知道 2Gb 可能太大而无法一次全部索引,但是说我有一个 100Mb 纯 JSON 文件 - 如何将其导入 ES? “_index”、“_type”和“_id”字段到底是什么?顺便感谢您的帮助。
    • 这就是您构建数据的方式。索引就像主集合。您可以有多种类型,但在索引中可以使用一种。如果你有自己的身份证,你可以提供。但你也可以省略它。
    • 这不是我要使用的结构。对于Maximum,我只显示值,而不是称为DoubleValue 的附加属性。您应该可以使用同一行,但 bulk 会创建一个名为 test 的索引,其类型名为 type1,id 为 1。
    猜你喜欢
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 2021-05-12
    • 1970-01-01
    • 2020-08-12
    相关资源
    最近更新 更多