更新时间:2024-12-02 GMT+08:00

使用Kibana或API导入数据到Elasticsearch

云搜索服务支持使用Kibana或者API将数据导入到Elasticsearch中,数据文件支持JSON等格式。

使用Kibana导入数据

在导入数据之前,您可以使用Kibana接入集群。如下操作步骤介绍如何使用POST命令导入数据。
  1. 登录云搜索服务管理控制台。
  2. 在左侧导航栏中,选择“集群管理 > Elasticsearch”,进入集群管理列表页面。
  3. 选择已创建的集群,单击操作列“Kibana”,登录Kibana。
  4. 单击左侧导航栏的“Dev Tools”进入操作页面。
  5. (可选)执行命令创建待存储数据的索引,并指定自定义映射来定义数据类型。

    如果待导入数据的集群已存在可用的索引,则不需要再创建索引;如果待导入数据的集群不存在可用的索引,则需要参考如下示例创建索引。

    例如:在Console界面,执行如下命令,创建索引“my_store”,并指定自定义映射来定义数据类型。

    7.x之前版本
    PUT /my_store
    {
        "settings": {
            "number_of_shards": 1
        },
        "mappings": {
            "products": {
                "properties": {
                    "productName": {
                        "type": "text"
                    },
                    "size": {
                        "type": "keyword"
                    }
                }
            }
        }
    }

    7.x之后版本

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

    7.x之后版本

    POST /my_store/_bulk  
    {"index":{}}  
    {"productName":"Latest art shirts for women in 2017 autumn","size":"L"}

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

    图1 返回消息

使用API导入数据

使用bulk API通过curl命令导入数据文件,如下操作以JSON数据文件为例。

使用API导入数据文件时,建议导入的数据文件大小不能超过50MB。

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

    登录弹性云服务器的详细操作请见。

  2. 执行如下命令,导入JSON数据。
    其中,{Private network address and port number of the node}需替换为集群中节点的内网访问地址和端口号,当该节点出现故障时,将导致命令执行失败。如果集群包含多个节点,可以将{Private network address and port number of the node}替换为集群中另一节点的内网访问地址和端口号;如果集群只包含一个节点,则需要将该节点修复之后再次执行命令进行导入数据。test.json为导入数据的json文件。
    curl -X PUT "http://{Private network address and port number of the node} /_bulk" -H 'Content-Type: application/json' --data-binary @test.json

    如果导入数据的集群已设置通信加密,需要发送https请求,同时执行curl命令时添加-k选项。

    curl -X PUT -k "https://{Private network address and port number of the node} /_bulk" -H 'Content-Type: application/json' --data-binary @test.json

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

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

    7.x之前版本

    {"index": {"_index":"my_store","_type":"products"}}
    {"productName": "2019秋装新款文艺衬衫女装","size": "M"}
    {"index": {"_index":"my_store","_type":"products"}}
    {"productName": "2019秋装新款文艺衬衫女装","size": "L"}

    7.x之后版本

    {"index": {"_index":"my_store"}}
    {"productName": "2019秋装新款文艺衬衫女装","size": "M"}
    {"index": {"_index":"my_store"}}
    {"productName": "2019秋装新款文艺衬衫女装","size": "L"}

    导入数据的操作步骤如下所示:

    1. 可执行以下命令,创建my_store索引。
      7.x之前版本
      curl -X PUT http://192.168.0.90:9200/my_store -H 'Content-Type: application/json' -d '
       { 
         "settings": { 
           "number_of_shards": 1 
         }, 
         "mappings": { 
           "products": { 
             "properties": { 
               "productName": { 
                 "type": "text" 
                 }, 
               "size": { 
                 "type": "keyword" 
               } 
             } 
           } 
         } 
       }'

      7.x之后版本

      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. 执行以下命令,导入testdata.json文件中的数据。
      curl -X PUT "http://192.168.0.90:9200/_bulk" -H 'Content-Type: application/json' --data-binary @testdata.json

    示例2:“testdata.json”数据文件中的数据导入至Elasticsearch集群,且此集群已进行通信加密。节点访问地址及数据文件内容与示例1相同。导入数据的操作步骤如下所示:

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