更新时间:2024-10-25 GMT+08:00

使用CDM导入数据到Elasticsearch

云搜索服务支持通过云数据迁移服务CDM的向导式界面,将存储在Oracle数据库或对象存储服务OBS中的数据导入到Elasticsearch或OpenSearch集群中,数据文件支持JSON格式。

表1 使用CDM导入数据至CSS服务

数据导入场景

源数据

目标集群

将Oracle数据库的数据导入到CSS服务

本地或第三方Oracle数据库

ElasticSearch 5.5、6.2、6.5、7.1、7.6、7.9、7.10版本

OpenSearch 1.3.6版本

将OBS的数据导入到CSS服务

OBS桶中的JSON数据

ElasticSearch 5.5、6.2、6.5、7.1、7.6、7.9、7.10版本

OpenSearch 1.3.6版本

准备工作

  1. 确认源数据。

    例如,源数据为如下json格式的文件。

    Elasticsearch版本<7.x的数据
    {"index": {"_index":"my_store","_type":"products"}}
    {"productName": "2019秋装新款文艺衬衫女装","size": "M"}
    {"index": {"_index":"my_store","_type":"products"}}
    {"productName": "2019秋装新款文艺衬衫女装","size": "L"}
    Elasticsearch版本≥7.x或OpenSearch版本的数据
    {"index": {"_index":"my_store"}}
    {"productName": "2019秋装新款文艺衬衫女装","size": "M"}
    {"index": {"_index":"my_store"}}
    {"productName": "2019秋装新款文艺衬衫女装","size": "L"}
  2. 获取源数据信息。
    • 当源数据是Oracle数据库时,需要获取Oracle数据库的IP、数据库名、用户名和密码。
    • 当源数据是OBS桶中的JSON数据时,需要获取OBS的访问域名、端口,以及AK、SK。
  3. 当源数据是Oracle数据库时,需要确保Oracle可通过公网IP访问,或者已经建立好了企业内部数据中心到华为云的VPN通道或专线。

导入数据

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

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

    Elasticsearch版本<7.x的命令
    PUT /demo
    {
      "settings": {
        "number_of_shards": 1
      },
      "mappings": {
        "products": {
          "properties": {
            "productName": {
              "type": "text",
              "analyzer": "ik_smart"
            },
            "size": {
              "type": "keyword"
            }
          }
        }
      }
    }

    Elasticsearch版本≥7.x或OpenSearch版本的命令

    PUT /demo
    {
      "settings": {
        "number_of_shards": 1
      },
      "mappings": {
          "properties": {
            "productName": {
              "type": "text",
              "analyzer": "ik_smart"
            },
            "size": {
              "type": "keyword"
            }
          }
        }
      }

    执行成功后显示如下:

    {
      "acknowledged" : true,
      "shards_acknowledged" : true,
      "index" : "demo"
    }
  8. 登录云数据迁移CDM管理控制台,通过CDM集群将Oracle或OBS的数据导入Elasticsearch或OpenSearch集群。
  9. 当数据迁移完成后,重新进入Elasticsearch或OpenSearch集群的Kibana操作页面,搜索已导入的数据。

    执行如下命令,搜索数据。查看搜索结果,如果数据与源数据一致,表示数据导入成功。

    GET demo/_search

    “demo”为创建的索引名称,需根据实际情况填写。

    执行成功后显示如下:

    {
      "took": 18,
      "timed_out": false,
      "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
      },
      "hits": {
        "total": 2,
        "max_score": 1,
        "hits": [
          {
            "_index": "demo",
            "_type": "products",
            "_id": "g6UepnEBuvdFwWkRmn4V",
            "_score": 1,
            "_source": {
              "size": """"size":"L"}""",
              "productName": """{"productName":"2019秋装新款文艺衬衫女装""""
            }
          },
          {
            "_index": "demo",
            "_type": "products",
            "_id": "hKUepnEBuvdFwWkRmn4V",
            "_score": 1,
            "_source": {
              "size": """"size":"M"}""",
              "productName": """{"productName":"2019秋装新款文艺衬衫女装""""
            }
          }
        ]
      }
    }