更新时间:2024-09-14 GMT+08:00

使用开源OpenSearch API导入数据到OpenSearch

云搜索服务支持在Kibana或者ECS服务器上使用开源OpenSearch API将数据导入到OpenSearch集群中,数据文件支持JSON等格式。OpenSearch API请参见REST API reference

在OpenSearch Dashboards上使用开源OpenSearch API导入数据

在OpenSearch Dashboards上支持通过POST命令使用开源OpenSearch API导入单条数据。
  1. 登录云搜索服务管理控制台。
  2. 在左侧导航栏中,选择“集群管理 > OpenSearch”,进入集群管理列表页面。
  3. 选择待导入数据的集群,单击操作列“Kibana”,登录OpenSearch Dashboards。
  4. 单击左侧导航栏的“Dev Tools”进入操作页面。
  5. 在OpenSearch Dashboards操作页面,执行命令查看集群是否存在索引。
    GET _cat/indices?v
    • 当待导入数据的集群已存在可用的索引时,则不需要再创建索引,直接执行步骤7
    • 当待导入数据的集群不存在可用的索引时,则需要执行下一步创建索引。
  6. 在OpenSearch Dashboards执行命令,创建待导入数据的索引,并指定自定义映射来定义数据类型。

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

    PUT /my_store
    {
        "settings": {
            "number_of_shards": 1
        },
        "mappings": {
            "properties": {
                "productName": {
                    "type": "text"
                },
                "size": {
                    "type": "keyword"
                }
            }
        }
    }
  7. 在OpenSearch Dashboards执行命令导入数据,以导入一条数据为例,执行如下命令。
    POST /my_store/_bulk  
    {"index":{}}  
    {"productName":"Latest art shirts for women in 2017 autumn","size":"L"}

    返回结果如图1所示,当返回结果信息中“errors”字段的值为“false”时,表示导入数据成功。

    图1 返回消息

在ECS服务器上使用开源OpenSearch API导入数据

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

本案例以非安全模式的集群为例介绍Curl命令导入数据,如果是安全模式的集群访问集群的命令请参见通过Curl命令行接入OpenSearch集群

  1. 登录云搜索服务管理控制台。
  2. 在左侧导航栏中,选择“集群管理 > OpenSearch”,进入集群管理列表页面。
  3. 在集群管理列表页面,选择待导入数据的集群,在“内网访问地址”列获取并记录集群的内网IP地址<host>和端口<port>,一般是“<host>:<port>”“<host>:<port>,<host>:<port>”样式。

    当集群只有一个节点时,此处仅显示1个节点的IP地址和端口号,例如“10.62.179.32:9200”;当集群有多个节点时,此处显示所有节点的IP地址和端口号,例如“10.62.179.32:9200,10.62.179.33:9200”

  4. 登录即将接入集群的弹性云服务器ECS。

    弹性云服务器的使用指导请参见快速购买和使用Linux ECS

  5. 将JSON数据文件上传至ECS。
    例如,将如下数据保存为json格式的文件,上传到ECS。
    {"index": {"_index":"my_store"}}
    {"productName": "2019秋装新款文艺衬衫女装","size": "M"}
    {"index": {"_index":"my_store"}}
    {"productName": "2019秋装新款文艺衬衫女装","size": "L"}
  6. 在ECS中存放JSON数据文件的路径下,执行如下命令将JSON数据文件导入到OpenSearch集群。
    curl -X PUT "http://{Private network address and port number of the node} /_bulk" -H 'Content-Type: application/json' --data-binary @test.json

    其中,{Private network address and port number of the node}需替换为集群中节点的内网访问地址和端口号。当该节点出现故障时,将导致命令执行失败,如果集群包含多个节点,可以将{Private network address and port number of the node}替换为集群中另一节点的内网访问地址和端口号,如果集群只包含一个节点,则需要将该节点修复之后再次执行命令进行导入数据。“test.json”为导入数据的json文件。

    其中,-X参数的参数值为命令,如“-X PUT”,-H参数的参数值为消息头,如“-H 'Content-Type: application/json' --data-binary @test.json”。添加的-k参数时,请勿将-k参数放置在参数与参数值之间。

    示例:“test.json”数据文件中的数据导入至OpenSearch集群,此集群未进行通信加密,其中一个节点内网访问地址为“192.168.0.90”,端口号为“9200”

    1. 执行如下命令,创建“my_store”索引。
      curl -X PUT http://192.168.0.90:9200/my_store -H 'Content-Type: application/json' -d '
      {
          "settings": {
              "number_of_shards": 1
          },
          "mappings": {
              "properties": {
                  "productName": {
                      "type": "text"
                  },
                  "size": {
                      "type": "keyword"
                  }
              }
          }
      }'
    2. 执行如下命令,导入“test.json”文件中的数据。
      curl -X PUT "http://192.168.0.90:9200/_bulk" -H 'Content-Type: application/json' --data-binary @test.json

      本案例回显如下信息,表示数据导入成功。

      {"took":204,"errors":false,"items":[{"index":{"_index":"my_store","_type":"_doc","_id":"DJQkBIwBbJvUd2769Wi-","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":0,"_primary_term":1,"status":201}},{"index":{"_index":"my_store","_type":"_doc","_id":"DZQkBIwBbJvUd2769Wi_","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1,"status":201}}]}