首页 > 解决方案 > CURL 命令未将大数据索引到弹性搜索中

问题描述

我已将旧 RDBMS 数据库中的一堆数据(500 000 条记录)导出到 json 格式的平面文件中,例如:

{"index", {"_id": 1}}
{"Name": "Jack"}
...
{"index", {"_id": 500000}}
{"Name": "Joe"}

我正在尝试使用 CURL 命令将此文件索引到 Elasticsearch 中,但 CURL 命令只是退出而不索引任何数据并且没有任何消息。

这是 CURL 命令:

curl -XPUT "localhost:9200/person/_doc/_bulk" -H "Content-Type: application/json" --data-binary "@person_data.json"

谁能建议我做错了什么?还是 CURL 命令无法发送大数据(尽管大约 175MB)?

我正在运行一个大型连接查询,它需要花费大量时间从 RDBMS 获取所有 500k 行。然后我将这些记录导出为文件中的 json 格式,以便弹性搜索批量 API 可以使用它。但是,正如我所见,CURL 命令根本无法索引如此庞大的数据而没有任何错误消息。

在这种情况下,是否有任何 GUI/控制台工具可以批量索引数据?

标签: elasticsearch

解决方案


有一个设置,http.max_content_length在 Elasticsearch 中调用,用于配置 http 内容的最大大小。

默认情况下它等于 100mb,这就是你不能正确索引它的原因。因此,您需要更改它并重新启动 Elasticsearch。最大可能值为Integer.MAX_VALUE

有关它的更多信息 - https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-http.html


推荐阅读