51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Doris整合Elasticsearch

1、环境

>doris 1.2.4 >Elasticsearch 7.7 安装教程 https://www.kuangstudy.com/bbs/1674603266094575618

2、doris 配置外表(方法一)

1、添加语法

>详细 官网 https://doris.apache.org/zh-CN/docs/1.2/lakehouse/external-table/es?_highlight=%E5%A4%96%E8%A1%A8#doris%E4%B8%AD%E5%88%9B%E5%BB%BAes%E5%A4%96%E8%A1%A8

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"

赞(7)
未经允许不得转载:工具盒子 » Doris整合Elasticsearch