云原生数据湖分析DLA(Data Lake Analytics)中支持接入Elasticsearch,通过标准SQL语句读取Elasticsearch中的数据,从而实现Elasticsearch中的数据与其他数据源的数据联合查询等业务需求。本文档主要介绍了DLA读写Elasticsearch数据的操作步骤。

前提条件

使用DLA读写Elasticsearch数据前,您需要通过以下操作在Elasticsearch中准备好测试数据。
  1. 创建阿里云Elasticsearch实例
    说明
    • DLA和Elasticsearch所属地域必须相同,否则无法进行本文档操作。
    • DLA只支持6.3及以上版本的Elasticsearch。
  2. 配置实例公网或私网访问白名单
  3. 访问实例
  4. 创建索引
  5. 创建文档并插入数据

背景信息

Elasticsearch是一个基于Lucene的实时分布式的搜索与分析引擎,是遵从Apache开源条款的一款开源产品,是当前主流的企业级搜索引擎。它提供了一个分布式服务,可以使您快速的近乎于准实时的存储、查询和分析超大数据集,通常被用来作为构建复杂查询特性和需求强大应用的基础引擎或技术。

操作步骤

  1. 创建Elasticsearch Schema。
    1. 登录DLA控制台
    2. 在左侧导航栏单击Serverless Presto > SQL访问点
    3. SQL访问点页面,单击登录到DMS,在DMS中执行以下SQL创建Schema。
      您也可以通过MySQL客户端或者程序代码等方式链接DLA,然后执行以下SQL创建Schema。
      ​ CREATE DATABASE `my_es_db`
       WITH DBPROPERTIES (
       catalog = 'elasticsearch',
       location = 'http://****.elasticsearch.aliyuncs.com:9200',
       user = '******',
       password = '******',
       VPC_ID = 'vpc-*****',
       INSTANCE_ID = 'es-*****'
      )​
      参数名称 参数说明
      catalog 取值为elasticsearch,表示创建的是Elasticsearch Schema。
      location Elasticsearch的连接地址,由地址、协议、和端口三部分组成。您可以登录阿里云Elasticsearch控制台,在Elasticsearch实例的基本信息页面获取Elasticsearch实例的连接地址。
      注意 您在输入LOCATION参数信息时,末尾不能添加符号/
      user Elasticsearch的用户名。
      password Elasticsearch的密码。
      VPC_ID Elasticsearch实例所在的VPC ID。
      INSTANCE_ID Elasticsearch的实例ID。
  2. 创建Elasticsearch表。
    例如通过以下SQL在my_es_db Schema中创建product_info表。
    ​ CREATE EXTERNAL TABLE `product_info` (
     `productname` string NULL COMMENT '',
     `annual_rate` string NULL COMMENT '',
     `describe` string NULL COMMENT ''
     )
     TBLPROPERTIES (
     TABLE_MAPPING = 'product_info',
     COLUMN_MAPPING = 'productname,productName; '
     );​
    说明
    • 默认情况下表名和ElasticSearch中对应的索引名保持一致。如果不一致可以通过TABLE_MAPPING属性指定要映射的索引名称。
    • 由于productName中包含大写字母,而DLA中列名称不区分大小写,所以需要在COLUMN_MAPPING中增加映射。
  3. 读取Elasticsearch中的表数据。
    例如通过SELECT在DLA中读取product_info表中的数据。
     select * from product_info;