云原生数据湖分析DLA(Data Lake Analytics)中支持接入Elasticsearch,通过标准SQL语句读取Elasticsearch中的数据,从而实现Elasticsearch中的数据与其他数据源的数据联合查询等业务需求。本文档主要介绍了DLA读写Elasticsearch数据的操作步骤。
背景信息
Elasticsearch是一个基于Lucene的实时分布式的搜索与分析引擎,是遵从Apache开源条款的一款开源产品,是当前主流的企业级搜索引擎。它提供了一个分布式服务,可以使您快速的近乎于准实时的存储、查询和分析超大数据集,通常被用来作为构建复杂查询特性和需求强大应用的基础引擎或技术。
操作步骤
- 创建Elasticsearch Schema。
- 登录DLA控制台。
- 在左侧导航栏单击。
- 在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。 |
- 创建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
中增加映射。
- 读取Elasticsearch中的表数据。
例如通过
SELECT
在DLA中读取
product_info
表中的数据。
select * from product_info;