文档首页/ 云搜索服务 CSS/ 用户指南/ OpenSearch/ 数据导入/ 使用开源OpenSearch API导入数据
更新时间:2026-04-24 GMT+08:00
分享

使用开源OpenSearch API导入数据

在应用开发调试或小规模数据迁移场景中,开发者经常需要快速将本地的JSON数据文件(如测试数据集、配置文件)写入OpenSearch集群。相比于配置复杂的Logstash或CDM等迁移工具,直接调用开源OpenSearch API(如 _bulk批量接口)是一种更轻量、灵活的解决方案。您既可以在OpenSearch Dashboards的界面中进行交互式写入,也可以在ECS等服务器上通过Curl命令行脚本化批量导入,实现数据的敏捷上云。

方式一:在OpenSearch Dashboards上导入数据

在OpenSearch Dashboards上支持通过POST命令使用开源OpenSearch API导入数据。

适用场景:开发调试、临时写入少量数据、语法验证。

  1. 登录OpenSearch Dashboards。
    1. 登录云搜索服务管理控制台
    2. 在左侧导航栏,选择“集群管理 > OpenSearch”
    3. 在集群列表,选择目标集群,单击操作列的“Dashboards”,登录OpenSearch Dashboards。
    4. 在OpenSearch Dashboards左侧导航栏选择“Dev Tools”,进入操作页面。

      控制台左侧是命令输入框,其右侧的三角形图标为执行按钮,右侧区域则显示执行结果。

  2. (可选)创建索引,并指定自定义映射来定义数据类型。

    例如,执行如下命令,创建索引“my_store”

    PUT /my_store
    {
        "settings": {
            "number_of_shards": 1
        },
        "mappings": {
            "properties": {
                "productName": {
                    "type": "text"
                },
                "size": {
                    "type": "keyword"
                }
            }
        }
    }
  3. 将数据导入索引。

    例如,执行如下命令,导入一条数据到索引“my_store”

    POST /my_store/_bulk  
    {"index":{}}  
    {"productName":"Latest art shirts for women in 2017 autumn","size":"L"}
  4. 结果验证。

    观察返回结果,当“errors”字段为“false”,且“items”数组中每条数据的“result”“created”,则表示全部导入成功。

方式二:在ECS上使用Curl命令行导入数据

在ECS服务器上支持通过Curl命令使用开源OpenSearch API导入数据文件。

适用场景:自动化脚本、批量导入本地JSON文件。

  1. 准备服务器。购买与OpenSearch集群在同一VPC下的弹性云服务器 (ECS)。

    ECS的使用指导请参见快速购买和使用Linux ECS

  2. 获取集群的内网访问地址。
    1. 登录云搜索服务管理控制台
    2. 在左侧导航栏,选择“集群管理 > OpenSearch”
    3. 在集群列表,选择目标集群,在“内网访问地址”列获取并记录集群的内网地址,一般是“<host>:<port>”“<host>:<port>,<host>:<port>”样式,例如“10.62.179.32:9200,10.62.179.33:9200”

      当集群中存在Client节点时,仅显示所有Client节点的IP和端口;否则,显示所有数据节点和冷数据节点的IP和端口。

  3. 验证连通性。在ECS服务器ping OpenSearch集群的内网IP地址,能正常访问则表示网络连通。
  4. 准备数据文件。将JSON数据文件上传至ECS。
    例如,将如下数据保存为“test.json”文件,上传到ECS。
    {"index": {"_index":"my_store"}}
    {"productName": "2019秋装新款文艺衬衫女装","size": "M"}
    {"index": {"_index":"my_store"}}
    {"productName": "2019秋装新款文艺衬衫女装","size": "L"}
  5. (可选)创建索引,并指定自定义映射来定义数据类型。

    例如,执行如下命令,创建索引“my_store”

    • 非安全模式的集群(HTTP):无需认证,直接访问。
      curl -X PUT "http://<host>:<port>/my_store" \
           -H 'Content-Type: application/json' \
           -d '{
             "settings": {
               "number_of_shards": 1
             },
             "mappings": {
               "properties": {
                 "productName": {
                   "type": "text"
                 },
                 "size": {
                   "type": "keyword"
                 }
               }
             }
           }'
    • 安全模式+HTTP协议的集群:需要身份认证(如果密码包含“!”等特殊字符,请使用单引号包裹,例如:“-u 'admin':'Pass!word'”)。
      curl -X PUT -u <user>:<password> "http://<host>:<port>/my_store" \
           -H 'Content-Type: application/json' \
           -d '{
             "settings": {
               "number_of_shards": 1
             },
             "mappings": {
               "properties": {
                 "productName": {
                   "type": "text"
                 },
                 "size": {
                   "type": "keyword"
                 }
               }
             }
           }'
    • 安全模式+HTTPS协议的集群:需要身份认证(如果密码包含“!”等特殊字符,请使用单引号包裹,例如:“-u 'admin':'Pass!word'”),且需要忽略SSL证书校验。
      curl -X PUT -k -u <user>:<password> "https://<host>:<port>/my_store" \
           -H 'Content-Type: application/json' \
           -d '{
             "settings": {
               "number_of_shards": 1
             },
             "mappings": {
               "properties": {
                 "productName": {
                   "type": "text"
                 },
                 "size": {
                   "type": "keyword"
                 }
               }
             }
           }'
  6. 执行导入命令,将JSON数据文件导入到OpenSearch集群。

    在ECS存放JSON数据文件的路径下,执行如下命令导入数据。

    • 非安全模式的集群(HTTP):无需认证,直接访问。
      curl -X POST "http://<host>:<port>/_bulk" \
           -H 'Content-Type: application/json' \
           --data-binary @test.json
    • 安全模式+HTTP协议的集群:需要身份认证(如果密码包含“!”等特殊字符,请使用单引号包裹,例如:“-u 'admin':'Pass!word'”)。
      curl -X POST -u <user>:<password> "http://<host>:<port>/_bulk" \
           -H 'Content-Type: application/json' \
           --data-binary @test.json
    • 安全模式+HTTPS协议的集群:需要身份认证(如果密码包含“!”等特殊字符,请使用单引号包裹,例如:“-u 'admin':'Pass!word'”),且需要忽略SSL证书校验。
      curl -X POST -k -u <user>:<password> "https://<host>:<port>/_bulk" \
           -H 'Content-Type: application/json' \
           --data-binary @test.json

    当访问节点出现故障时,会导致命令执行失败,如果集群包含多个节点,可以将<host>替换为另一个节点的IP地址,如果集群只有一个节点,则需要等待节点修复之后再执行命令导入数据。

  7. 结果验证。
    导入成功后,会返回如下信息:
    {"took":204, "errors":false, "items":[...]}

    “errors”“false”则表示全部导入成功。

相关文档