前言
如果希望将数据导出到本地文件而不是通过编程方式处理,可以考虑使用Elasticsearch的导出工具,如Elasticsearch Dump
(Elasticdump)或Elasticsearch Exporter
。这些工具可以将Elasticsearch索引中的数据导出为可用于后续处理的文件格式,如JSON或CSV,本文主要介绍使用Elasticsearch Dump进行索引数据导出的示例:
1 安装Node.js和npm
首先,确保主机已安装Node.js和npm,可以从Node.js官方网站(https://nodejs.org)下载并按照说明进行安装。
要判断当前系统是否已安装Node.js和npm,可以按照以下步骤进行:
-
打开终端或命令行界面。
-
在终端或命令行中输入以下命令来检查Node.js的版本:
node -v
-
输入以下命令来检查npm的版本:
npm -v
根据上述步骤的结果,可以判断当前系统是否已安装Node.js和npm。如果两者都已安装并且显示了版本号,则说明可以在系统上使用它们。如果没有安装或显示错误信息,则需要根据需要安装Node.js和npm。
2. 安装Elasticsearch Dump
打开终端或命令行界面, 运行以下命令来全局安装Elasticsearch Dump:
npm install elasticdump -g
3. 使用Elasticsearch Dump导出索引结构
Elasticsearch Dump支持导出和导入索引的映射(mapping)和设置(settings)
3.1 导出索引设置
elasticdump --input=http://localhost:9200/my_index --output=/path/to/exported_settings.json --type=settings
这将导出"my_index"索引的设置,并保存到指定的JSON文件中。
示例:
elasticdump --input=http://192.168.0.221:11700/cnoa_data_1987051001 --output=E:/elatic_dump/cnoa_data_1987051001_settings.json --type=settings
3.2 导出索引映射
elasticdump --input=http://localhost:9200/my_index --output=/path/to/exported_mapping.json --type=mapping
这将导出"my_index"索引的映射,并保存到指定的JSON文件中
示例:
elasticdump --input=http://192.168.0.221:11700/cnoa_data_1987051001 --output=E:/elatic_dump/cnoa_data_1987051001_mapping.json --type=mapping
3.3 导入索引设置
elasticdump --input=/path/to/exported_settings.json --output=http://localhost:9200/new_index --type=settings
这将导入先前导出的设置数据到"new_index"索引中。
示例:
elasticdump --input=E:/elatic_dump/cnoa_data_1987051001_settings.json --output=http://localhost:9200/zhouquan_index --type=settings
注意:此操作会创建新的es索引并设置settings
3.4 导入索引映射
elasticdump --input=/path/to/exported_mapping.json --output=http://localhost:9200/new_index --type=mapping
这将导入先前导出的映射数据到"new_index"索引中。
示例:
elasticdump --input=E:/elatic_dump/cnoa_data_1987051001_mapping.json --output=http://localhost:9200/zhouquan_index --type=mapping
4. 使用Elasticsearch Dump导出数据
在终端或命令行界面中,可以使用以下命令导出Elasticsearch索引中的数据:
elasticdump --input=http://your_elasticsearch_host:9200/your_index_name --output=/path/to/output_file.json --type=data
- 将
your_elasticsearch_host
替换为实际的Elasticsearch主机地址。 - 将
your_index_name
替换为要导出的索引名称。 - 将
/path/to/output_file.json
替换为您想要保存导出数据的路径和文件名。 --type=data
参数指定导出类型为数据。您还可以选择导出其他类型,如--type=mapping
(导出索引映射)或--type=settings
(导出索引设置)。- 可以使用其他选项来进一步配置导出,如
--limit
(限制导出的文档数量)或--searchBody
(指定自定义的搜索查询)。
运行命令后,Elasticsearch Dump将开始将数据从指定的索引导出到指定的文件中。导出的文件将采用JSON格式
示例:
elasticdump --input=http://192.168.0.1:8200/book --output=E:/elatic_dump/esdumptest.json --type=data
5. 使用Elasticsearch Dump导入数据到另一个Elasticsearch实例
如果希望将导出的数据导入到另一个Elasticsearch实例,可以使用Elasticsearch Dump的--output
参数来指定导入的目标。
elasticdump --input=/path/to/exported_file.json --output=http://new_elasticsearch_host:9200/new_index_name --type=data
- 将
/path/to/exported_file.json
替换为先前导出的文件路径和文件名。 - 将
new_elasticsearch_host
替换为目标Elasticsearch主机地址。 - 将
new_index_name
替换为目标索引名称。
示例:
elasticdump --input=E:/elatic_dump/esdumptest.json --output=http://localhost:9200/zhouquan_index --type=data
6. Elasticsearch的滚动搜索(Scroll API)
如果希望代码的方式读取所有数据
这个API允许在不受限制地从Elasticsearch中检索大量数据。它通过在每次请求中返回一小部分结果,并为您保持搜索上下文,以便在后续请求中继续滚动。可以使用滚动搜索将所有数据检索到本地,然后进行处理。此代码将从指定的索引中检索
所有文档,并在每个文档上执行需要的操作
此操作可参考我之前写的文章:
Elasticsearch“滚动查询“(Scrolling)的机制的与Java使用ES Client 调用滚动查询