实时数仓-Doris ON ES

原理介绍:原文点击  

   Doris通过创建外部表方式将Doris的分布式查询规划能力和ES(Elasticsearch)的全文检索能力相结合,提供更完善的OLAP分析场景解决方案,支持:

  1. ES中的多index分布式Join查询

  2. Doris和ES中的表联合查询,更复杂的全文检索过滤

图片

   创建ES外表后,FE会请求建表指定的主机,获取所有节点的HTTP端口信息以及index的shard分布信息等,如果请求失败会顺序遍历host列表直至成功或完全失败。

   执行查询时,会根据FE得到的一些节点信息和index的元数据信息,生成查询计划并发给对应的BE节点,BE节点会根据就近原则即优先请求本地部署的ES节点,BE通过HTTP Scroll方式流式的从ES index的每个分片中并发的获取数据

计算完结果后,返回给client端。

    ES节点类型分为主节点、数据节点、协调节点,FE通过主节点获取ES信息,BE直接拉取数据节点获取数据。

实验过程  

实验环境:doris版本0.14.0,elasticsearch版本7.11.1

doris环境搭建及启动这里就不在叙述了,elasticsearch参考ES环境搭建及后续文章

一、单节点查询:

1、创建doris外部表

CREATE EXTERNAL TABLE `es_table` (  `id` bigint(20) COMMENT "",  `k1` bigint(20) COMMENT "",  `k2` datetime COMMENT "",  `k3` varchar(20) COMMENT "",  `k4` varchar(100) COMMENT "",  `k5` float COMMENT "") ENGINE=ELASTICSEARCHPARTITION BY RANGE(`id`)()PROPERTIES ("host" = "http://192.168.244.129:9200","index" = "test”);

2、ES初始化

1、创建test索引

{  "mappings": {    "properties": {      "k1": {        "type": "long",        "index": "true"      },      "k3": {        "type": "text",        "analyzer": "ik_max_word",        "search_analyzer": "ik_max_word"      },      "k4": {        "type": "text",        "analyzer": "ik_max_word",        "search_analyzer": "ik_max_word"      },      "k5": {        "type": "float"      },      "k2": {        "type": "date",        "format": "yyyy-MM-dd"      }    }  }}

图片

2、添加数据

{  "k1": 100,  "k2": "2020-01-01",  "k3": "Trying",  "k4": "Trying out Elasticsearch",  "k5": 10}

数据添加成功后,在mysql客户端连接doris查询ES数据,看到如下结果代表doris查询ES成功。

图片

3、批量添加数据

POST /_bulk
{"index":{"_index":"test"}}
{ "k1" : 100, "k2": "2020-01-01", "k3": "Trying out Elasticsearch", "k4": "Trying out Elasticsearch", "k5": 10.0}
{"index":{"_index":"test"}}
{ "k1" : 100, "k2": "2020-01-01", "k3": "Trying out Doris", "k4": "Trying out Doris", "k5": 10.0}
{"index":{"_index":"test"}}
{ "k1" : 100, "k2": "2020-01-01", "k3": "Doris On ES", "k4": "Doris On ES", "k5": 10.0}
{"index":{"_index":"test"}}
{ "k1" : 100, "k2": "2020-01-01", "k3": "Doris", "k4": "Doris", "k5": 10.0}
{"index":{"_index":"test"}}
{ "k1" : 100, "k2": "2020-01-01", "k3": "ES", "k4": "ES", "k5": 10.0}

执行模糊匹配查询:

图片

二、JOIN查询:

1、创建外部表

图片

2、ES创建索引test2

{  "mappings": {    "properties": {      "k1": {        "type": "long",        "index": "true"      },      "k3": {        "type": "text",        "analyzer": "ik_max_word",        "search_analyzer": "ik_max_word"      },      "k4": {        "type": "text",        "analyzer": "ik_max_word",        "search_analyzer": "ik_max_word"      },      "k5": {        "type": "float"      },      "k2": {        "type": "date",        "format": "yyyy-MM-dd"      }    }  }}

3、ES添加数据​​​​​​​

POST /_bulk{"index":{"_index":"test2"}}{ "k1" : 200, "k2": "2020-02-01", "k3": "Doris e ", "k4": "ES", "k5": 20.0}

4、执行JOIN查询

图片

5、JOIN模糊查询​​​​​​​

select * from test ,test2 where test.k1=test2.k1 and esquery (test.k3, '{        "match": {           "k3": "ES"        }    }');

图片

Doris ON  ES 今天就介绍到这里了,觉得有用关注:蓝天Java大数据

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
doris实时数仓实战》是一本介绍"实时数仓"的实战技术书籍。实时数仓是指将数据仓库(Data Warehouse)与实时流计算技术相结合,实现数据的快速处理和实时分析的系统。 这本书主要从实战的角度,以Doris(原名Palo)作为实时数仓的核心技术,介绍了实时数仓的建设与应用。Doris是一种分布式、高性能、高可用的列式存储分析系统,适用于大规模数据分析和实时查询。 书中首先介绍了实时数仓的背景和概念,以及Doris的基本原理和架构。接着对Doris的安装和配置进行了详细的讲解,包括数据模型设计、表定义和索引创建等。 然后,书中详细介绍了如何通过Doris进行数据的导入和处理。包括了数据导入的几种方式,如使用Doris自带的ETL工具和使用第三方工具,以及如何进行实时数据的计算和分析。 书中还介绍了Doris的高级功能和应用,例如多集群部署、数据备份和恢复、高可用性配置等。同时也提到了一些在实际应用中的常见问题和解决方案。 通过这本书,读者可以了解到实时数仓的基本概念和原理,学习到如何使用Doris构建实时数仓,并能够应用到实际的数据分析和查询中。 总的来说,《doris实时数仓实战》是一本实用性很强的技术书籍,适合对实时数仓感兴趣的技术人员阅读,对于提高数据分析和查询的效率和准确性有很大的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值