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

云原生数据湖分析DLA(Data Lata Analytics)中支持接入Elasticsearch,通过标准SQL语句读取Elasticsearch中的数据,从而实现Elasticsearch中的数据与其他数据源的数据联合查询等业务需求。

说明 目前仅部分region支持通过DLA分析ElasticSearch数据。可以向DLA答疑咨询您所在的region是否支持。

使用DLA读写Elasticsearch数据前,您需要通过以下操作在Elasticsearch中准备好测试数据。

  1. 创建阿里云Elasticsearch实例
    说明
    • DLA和Elasticsearch所属地域必须相同,否则无法进行本文档操作。
    • DLA只支持6.3及以上版本的Elasticsearch。
  2. 配置ES公网或私网访问白名单
  3. 步骤三:访问实例
  4. 创建索引

    ​​​​​​​​​PUT /product_info
    {
      "settings": {
        "number_of_shards": 5,
        "number_of_replicas": 1
      },
      "mappings": {
        "products": {
          "properties": {
            "productName": {"type": "text","analyzer": "ik_smart"},
            "annual_rate":{"type":"keyword"},
            "describe": {"type": "text","analyzer": "ik_smart"}
          }
        }
      }
    }​
  5. 写入数据
    ​POST /product_info/products/_bulk
    {"index":{}}
    {"productName":"大健康天天理财","annual_rate":"3.2200%","describe":"180天定期理财,最低20000起投,收益稳定,可以自助选择消息推送"}
    {"index":{}}
    {"productName":"西部通宝","annual_rate":"3.1100%","describe":"90天定投产品,最低10000起投,每天收益到账消息推送"}
    {"index":{}}
    {"productName":"安详畜牧产业","annual_rate":"3.3500%","describe":"270天定投产品,最低40000起投,每天收益立即到账消息推送"}
    {"index":{}}
    {"productName":"5G设备采购月月盈","annual_rate":"3.1200%","describe":"90天定投产品,最低12000起投,每天收益到账消息推送"}
    {"index":{}}
    {"productName":"新能源动力理财","annual rate":"3.0100%","describe":"30天定投产品推荐,最低8000起投,每天收益会消息推送"}
    {"index":{}}
    {"productName":"微贷赚","annual_rate":"2.7500%","describe":"热门短期产品,3天短期,无须任何手续费用,最低500起投,通过短信提示获取收益消息"}​

操作步骤

  1. 连接DLA。
  2. 通过以下SQL在DLA中创建Elasticsearch 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的连接地址,由协议、地址和端口三部分组成。
      注意 您在输入LOCATION参数信息时,末尾不能添加符号/
    • USER:Elasticsearch的用户名。
    • PASSWORD:USER对应的密码。
    • VPC_ID:Elasticsearch的VPC ID。
    • INSTANCE_ID:Elasticsearch的实例ID。
  3. 通过以下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; '
     );​

    这里由于productName中包含大写字母,而DLA中列名称不区分大小写,所以需要在COLUMN_MAPPING中增加映射。

    表创建成功后,您就可以通过SELECT在DLA中读取Elasticsearch中的数据。

     select * from product_info;