Doris整合Elasticsearch
1、环境
doris 1.2.4
Elasticsearch 7.7 安装教程 https://www.cnblogs.com/yanzhong/p/17515917.html
2、doris 配置外表(方法一)
1、添加语法
详细 官网
https://doris.apache.org/zh-CN/docs/1.2/lakehouse/external-table/es?_highlight=外表#doris中创建es外表
CREATE EXTERNAL TABLE `es_table`
ENGINE=Elasticsearch
PROPERTIES (
"hosts" = "http://192.168.31.128:9200", -- es 集群地址
"index" = "phone",
-- es 索引名称
"user" = "elastic",
-- 账号密码
"password" = "162552"
);
参数 | 说明 |
---|---|
hostsES | 集群地址,可以是一个或多个,也可以是ES前端的负载均衡地址 |
index | 对应的ES的index名字,支持alias,如果使用doc_value,需要使用真实的名称 |
type | index的type,ES 7.x及以后的版本不传此参数 |
user | ES集群用户名 |
password | 对应用户的密码信息 |
- ES 7.x之前的集群请注意在建表的时候选择正确的索引类型type
- 认证方式目前仅支持Http Basic认证,并且需要确保该用户有访问: /_cluster/state/、_nodes/http等路径和index的读权限; 集群未开启安全认证,用户名和密码不需要设置
- Doris表中的列名需要和ES中的字段名完全匹配,字段类型应该保持一致
- ENGINE必须是
Elasticsearch
2、操作
支持查询
selec * from es_table
不支持增 删 改
INSERT INTO es_table VALUES ("http://www.xxx.com/xx.jpg","mate40",888,"华为")
update es_table SET title = "123" where title = "手机666"
DELETE FROM es_table where title = "手机666"
3、doris catalog 多数据源 es(方法二)
1、添加语法
Elasticsearch Catalog 除了支持自动映射 ES 元数据外,也可以利用 Doris 的分布式查询规划能力和ES(Elasticsearch) 的全文检索能力相结合,提供更完善的 OLAP 分析场景解决方案:
- ES 中的多 index 分布式 Join 查询。
- Doris 和 ES 中的表联合查询,更复杂的全文检索过滤。
- 使用限制支持
Elasticsearch 5.x
及以上版本。
详情 官网
https://doris.apache.org/zh-CN/docs/1.2/lakehouse/multi-catalog/es
CREATE CATALOG es PROPERTIES (
"type"="es",
"hosts"="http://192.168.31.128:9200",
"user" = "elastic",
"password" = "162552"
);
参数说明
| 参数| 是否必须| 默认值| 说明|
| ------------ | ------------ |
| hosts| 是| | ES 地址,可以是一个或多个,也可以是 ES 的负载均衡地址|
| user| 否| 空| ES 用户名|
| password| 否| 空| 对应用户的密码信息|
|doc_value_scan| 否| true| 是否开启通过 ES/Lucene 列式存储获取查询字段的值|
|keyword_sniff|否|true|是否对 ES 中字符串分词类型text.fields 进行探测,通过 keyword 进行查询。设置为 false 会按照分词后的内容匹配|
|nodes_discovery|否|true|是否开启 ES 节点发现,默认为 true,在网络隔离环境下设置为 false,只连接指定节点|
|ssl|否|false|ES 是否开启 https 访问模式,目前在 fe/be 实现方式为信任所有|
|mapping_es_id|否|false|是否映射 ES 索引中的_id字段|
|like_push_down|否|true|是否将 like 转化为 wildchard 下推到 ES,会增加 ES cpu 消耗|
- 认证方式目前仅支持 Http Basic 认证,并且需要确保该用户有访问: /_cluster/state/、_nodes/http 等路径和 index 的读权限; 集群未开启安全认证,用户名和密码不需要设置。
- 5.x 和 6.x 中一个 index 中的多个 type 默认取第一个。
2、操作
查看所有的catalog 数据源
# internal 是doris 主数据源
show catalogs;
- 切换到es的catlog数据源
- 因为 Elasticsearch 没有 Database 的概念,所以连接 ES 后,会自动生成一个唯一的 Database:default_db。
- 并且在通过 SWITCH 命令切换到 ES Catalog 后,会自动切换到 default_db。无需再执行 USE default_db 命令。
#切换 数据源
switch es;
#查询所有的表(对应es中的index索引)
show tables
查询
select * from phone;
增删改 (不支持)
提示es 的catalog 没有这些操作 需要切换到doris的 数据源下
INSERT INTO phone VALUES ("http://www.xxx.com/xx.jpg","mate40",888,"华为")
update phone SET title = "123" where title = "手机666"
DELETE FROM es_table where title = "手机666"
切换到doris 数据源下 提示 没有对应的库跟表
#切换数据源
switch internal;
#操作
INSERT INTO es.phone VALUES ("http://www.xxx.com/xx.jpg","mate40",888,"华为")
update es.phone SET title = "123" where title = "手机666"
DELETE FROM es.phone where title = "手机666"