Elasticsearch

数据仓库 PALO

  • 功能发布记录
  • 操作手册1
    • LDAP认证
    • 时区
    • 使用S3-SDK访问对象存储
    • 权限管理
    • 物化视图
    • 变量
    • 资源管理
    • 数据更新与删除
      • 标记删除
      • Sequence-Column
      • 数据更新
      • 数据删除
    • 备份与恢复
      • 备份与恢复
    • 数据导出1
      • SELECT INTO OUTFILE
      • MySQL Dump
      • 数据导出概述
      • Export
    • 数据导出
      • 全量数据导出
      • 导出查询结果集
      • 导出总览
      • 导出数据到外部表
    • 查询加速1
      • 查询缓存
      • 物化视图
        • 同步物化视图
        • 物化视图概览
        • 异步物化视图
          • 异步物化视图常见问题
          • 最佳实践
          • 异步物化视图概述
          • 创建、查询与维护异步物化视图
    • 数据导入
      • JSON格式数据导入说明
      • 导入本地数据
      • 导入BOS中的数据
      • 导入事务和原子性
      • 通过外部表同步数据
      • 使用JDBC同步数据
      • 列的映射、转换与过滤
      • 订阅Kafka日志
      • 严格模式
      • 导入总览
    • 数据更新与删除1
      • 事务
      • 数据更新
        • 主键模型的导入更新
        • 主键模型的 Update 更新
        • 数据更新概述
        • 主键模型的更新并发控制
        • 聚合模型的导入更新
      • 数据删除
        • 删除操作概述
        • Truncate 操作
        • 表原子替换
        • Delete 操作
        • 基于导入的批量删除
        • 临时分区
    • 数据导入1
      • 高并发导入优化(Group Commit)
      • 导入概览
      • 异常数据处理
      • 导入高可用性
      • 导入时实现数据转换
      • 数据源
        • Kafka
        • S3 兼容存储
        • 从其他 TP 系统迁移数据
        • HDFS
        • 从其他 AP 系统迁移数据
        • Flink
        • 本地文件
      • 导入方式
        • Broker Load
        • MySQL Load
        • Insert Into Values
        • Stream Load
        • Insert Into Select
        • Routine Load
      • 文件格式
        • CSV
        • JSON
        • Parquet
        • ORC
      • 复杂数据类型
        • MAP
        • Variant
        • JSON
        • STRUCT
        • Bitmap
        • HLL
        • ARRAY
  • 开发指南
    • 迁移ClickHouse数据
    • Doris集群间数据迁移
    • 数据更新与删除
      • 事务
      • 数据更新
        • 主键模型的导入更新
        • 主键模型的 Update 更新
        • 数据更新概述
        • 主键模型的更新并发控制
        • 聚合模型的导入更新
      • 数据删除
        • 删除操作概述
        • Truncate 操作
        • 表原子替换
        • Delete 操作
        • 基于导入的批量删除
        • 临时分区
    • 查询加速
      • 查询缓存
      • Colocation Join
      • 高并发点查
      • Hint
        • Hint 概述
        • Leading Hint
        • Distribute Hint
      • 物化视图
        • 同步物化视图
        • 物化视图概览
        • 异步物化视图
          • 异步物化视图常见问题
          • 最佳实践
          • 异步物化视图概述
          • 创建、查询与维护异步物化视图
      • 高效去重
        • BITMAP 精准去重
        • HLL 近似去重
      • 优化技术原理
        • TOPN 查询优化
        • 统计信息
        • Pipeline 执行引擎
        • 查询优化器介绍
        • Runtime Filter
      • 查询调优概述
        • 调优概述
        • 诊断工具
        • 分析工具
        • 调优流程
      • 查询优化实践
        • 常见调优参数
        • 计划调优
          • 使用 Hint 控制代价改写
          • 使用异步物化视图透明改写
          • 使用 Leading Hint 控制 Join 顺序
          • 优化表 Schema 设计
          • 使用分区裁剪优化扫表
          • 优化索引设计和使用
          • 使用 Hint 调整 Join Shuffle 方式
          • DML 计划调优
          • 使用 Colocate Group 优化 Join
          • 使用同步物化视图透明改写
          • 使用 SQL Cache 加速查询
        • 执行调优
          • 数据倾斜处理
          • RuntimeFilter 的等待时间调整
          • 并行度调优
    • 数据查询
      • 连接(JOIN)
      • 子查询
      • 复杂类型查询
      • 列转行 (Lateral View)
      • MySQL 兼容性
      • 聚合多维分析
      • 分析函数(窗口函数)
      • 公用表表达式(CTE)
      • 自定义函数
        • 别名函数
        • Java UDF, UDAF, UDTF
    • 数据导出
      • SELECT INTO OUTFILE
      • MySQL Dump
      • 最佳实践
      • 数据导出概述
      • Export
    • 数据导入
      • 高并发导入优化(Group Commit)
      • 异常数据处理
      • 导入高可用性
      • 导入时实现数据转换
      • 导入最佳实践
      • 数据源
        • Kafka
        • Snowflake
        • S3 兼容存储
        • Google Cloud Storage
        • 从其他 TP 系统迁移数据
        • Azure Storage
        • 腾讯云 COS
        • MinIO
        • HDFS
        • 阿里云 OSS
        • 华为云 OBS
        • 从其他 AP 系统迁移数据
        • Flink
        • Redshift
        • Amazon S3
        • 本地文件
        • BigQuery
      • 导入方式
        • Broker Load
        • MySQL Load
        • Insert Into Values
        • Stream Load
        • Insert Into Select
        • Routine Load
      • 文件格式
        • CSV
        • JSON
        • Parquet
        • ORC
      • 复杂数据类型
        • MAP
        • Variant
        • JSON
        • STRUCT
        • Bitmap
        • HLL
        • ARRAY
    • BI工具接入
      • Sugar
      • Navicat
      • Tableau
      • DBeaver
      • 永洪BI
      • FineBI(帆软)
    • 数据库连接
      • 通过 MySQL 协议连接
      • 基于 Arrow Flight SQL 的高速数据传输链路
    • 湖仓一体
      • 分析 S3或HDFS 上的文件
      • 湖仓一体概述
      • SQL 方言兼容
      • 弹性计算节点
      • 云服务认证接入
      • 元数据缓存
      • 外表统计信息
      • 数据缓存
      • 数据库分析
        • MySQL
        • JDBC Catalog
        • Oracle
        • OceanBase
        • SAP HANA
        • 阿里云 MaxCompute
        • ClickHouse
        • PostgreSQL
        • IBM Db2
        • SQL Server
        • Elasticsearch
      • 湖仓一体最佳实践
        • 使用 PALO 和 Paimon
        • 使用 PALO 和 Iceberg
        • 使用 PALO 和 Hudi
        • 使用 PALO 和 LakeSoul
      • 数据湖构建
        • Iceberg
        • Hive
      • 数据湖分析
        • Hudi Catalog
        • 阿里云 DLF
        • Iceberg Catalog
        • Paimon Catalog
        • Hive Catalog
    • 数据表设计
      • 行业混存
      • 数据压缩
      • Schema 变更
      • 数据类型
      • 自增列
      • 概览
      • 数据库建表最佳实践
      • 冷热数据分层
        • SSD 和 HDD 层级存储
        • 远程存储
        • 冷热数据分层概述
      • 表索引
        • 倒排索引
        • 前缀索引与排序键
        • N-Gram 索引
        • BloomFilter 索引
        • 索引概述
      • 数据划分
        • 数据分桶
        • 数据分布概念
        • 动态分区
        • 自动分区
        • 手动分区
        • 常见文档
      • 数据模型
        • 使用注意
        • 模型概述
        • 主键模型
        • 明细模型
        • 聚合模型
  • 版本发布历史
    • 百度数据仓库 Palo 2.0 版本全新发布
  • SQL手册
    • 字面常量
    • 别名
    • SQL-手册
    • 数据类型
    • SQL语句
    • 注释
    • 内置函数
    • 白名单管理
    • SQL操作符
    • 内置函数
      • 聚合函数
      • 位操作函数
      • 字符串函数
      • 条件函数
      • 数学函数
      • JSON解析函数
      • 类型转换函数
      • 格式转换函数
      • 通用函数
      • 时间和日期函数
      • BITMAP函数
      • 窗口函数
      • 哈希函数
      • HLL函数
    • 语法帮助
      • DML
        • INSERT
        • ROUTINE-LOAD
        • RESTORE
        • SELECT-INTO-OUTFILE
        • ALTER-ROUTINE-LOAD
        • BROKER-LOAD
        • BACKUP
        • EXPORT
        • STREAM-LOAD
      • DDL
        • CREATE-FILE
        • DROP-RESOURCE
        • CREATE-RESOURCE
        • CREATE-MATERIALIZED-VIEW
        • DROP-RESROUCE
        • CREATE-TABLE
        • DROP-REPOSITORY
        • CREATE-REPOSITORY
        • CREATE-ODBC-TABLE
      • 信息查看语句
        • SHOW-BACKUP
        • SHOW-ALTER-TABLE-MATERIALIZED-VIEW
        • SHOW-SNAPSHOT
        • SHOW-ROUTINE-LOAD
        • SHOW-CREATE-ROUTINE-LOAD
        • SHOW-ROLES
        • SHOW-GRANTS
        • SHOW-EXPORT
        • SHOW-ROUTINE-LOAD-TASK
        • SHOW-REPOSITORIES
        • SHOW-LOAD
        • SHOW-RESOURCES
        • SHOW-RESTORE
        • SHOW-PROPERTY
        • SHOW-FILE
      • 辅助命令
        • PAUSE-ROUTINE-LOAD
        • STOP-ROUTINE-LOAD
        • ALTER-ROUTINE-LOAD
        • CANCEL-LOAD
        • RESUME-ROUTINE-LOAD
      • 账户管理
        • SET-PROPERTY
        • REVOKE
        • GRANT
        • CREATE-ROLE
        • DROP-ROLE
        • CREATE-USER
        • DROP-USER
        • SET-PASSWORD
  • 快速入门
    • 快速上手
    • 存算分离
    • 存算一体
  • 典型实践
    • 如何开启Debug日志
    • 导入分析
    • 查询分析
  • 操作手册
    • 权限和子用户
    • 存算一体
      • 连接集群
      • 查询分析
      • 监控告警
        • 监控指标
        • 告警配置
      • 备份恢复
        • 通过管理页面备份与恢复
        • 备份与恢复
      • 权限管理
        • 集群权限
        • 控制台权限
      • 集群管理
        • 集群创建
        • 停止与删除
        • 重置管理员密码
        • 集群扩缩容
        • 集群详情
    • 存算分离
      • 连接集群
      • 计算组管理
        • 重启计算组
        • 创建计算组
      • 监控告警
        • 监控指标
        • 告警配置
      • 权限管理
        • 集群权限
        • 控制台权限
      • 集群管理
        • 停止与删除
        • 创建集群
        • 重置管理员密码
        • 集群详情
  • 服务等级协议SLA
    • 服务等级协议(SLA)v1.0
  • 产品概述
    • 系统架构
    • 产品特点
    • 产品介绍
  • 视频专区
    • 操作指南
    • 产品简介
  • 产品定价
    • 预付费
    • 计费说明
    • 后付费
所有文档
menu
没有找到结果,请重新输入

数据仓库 PALO

  • 功能发布记录
  • 操作手册1
    • LDAP认证
    • 时区
    • 使用S3-SDK访问对象存储
    • 权限管理
    • 物化视图
    • 变量
    • 资源管理
    • 数据更新与删除
      • 标记删除
      • Sequence-Column
      • 数据更新
      • 数据删除
    • 备份与恢复
      • 备份与恢复
    • 数据导出1
      • SELECT INTO OUTFILE
      • MySQL Dump
      • 数据导出概述
      • Export
    • 数据导出
      • 全量数据导出
      • 导出查询结果集
      • 导出总览
      • 导出数据到外部表
    • 查询加速1
      • 查询缓存
      • 物化视图
        • 同步物化视图
        • 物化视图概览
        • 异步物化视图
          • 异步物化视图常见问题
          • 最佳实践
          • 异步物化视图概述
          • 创建、查询与维护异步物化视图
    • 数据导入
      • JSON格式数据导入说明
      • 导入本地数据
      • 导入BOS中的数据
      • 导入事务和原子性
      • 通过外部表同步数据
      • 使用JDBC同步数据
      • 列的映射、转换与过滤
      • 订阅Kafka日志
      • 严格模式
      • 导入总览
    • 数据更新与删除1
      • 事务
      • 数据更新
        • 主键模型的导入更新
        • 主键模型的 Update 更新
        • 数据更新概述
        • 主键模型的更新并发控制
        • 聚合模型的导入更新
      • 数据删除
        • 删除操作概述
        • Truncate 操作
        • 表原子替换
        • Delete 操作
        • 基于导入的批量删除
        • 临时分区
    • 数据导入1
      • 高并发导入优化(Group Commit)
      • 导入概览
      • 异常数据处理
      • 导入高可用性
      • 导入时实现数据转换
      • 数据源
        • Kafka
        • S3 兼容存储
        • 从其他 TP 系统迁移数据
        • HDFS
        • 从其他 AP 系统迁移数据
        • Flink
        • 本地文件
      • 导入方式
        • Broker Load
        • MySQL Load
        • Insert Into Values
        • Stream Load
        • Insert Into Select
        • Routine Load
      • 文件格式
        • CSV
        • JSON
        • Parquet
        • ORC
      • 复杂数据类型
        • MAP
        • Variant
        • JSON
        • STRUCT
        • Bitmap
        • HLL
        • ARRAY
  • 开发指南
    • 迁移ClickHouse数据
    • Doris集群间数据迁移
    • 数据更新与删除
      • 事务
      • 数据更新
        • 主键模型的导入更新
        • 主键模型的 Update 更新
        • 数据更新概述
        • 主键模型的更新并发控制
        • 聚合模型的导入更新
      • 数据删除
        • 删除操作概述
        • Truncate 操作
        • 表原子替换
        • Delete 操作
        • 基于导入的批量删除
        • 临时分区
    • 查询加速
      • 查询缓存
      • Colocation Join
      • 高并发点查
      • Hint
        • Hint 概述
        • Leading Hint
        • Distribute Hint
      • 物化视图
        • 同步物化视图
        • 物化视图概览
        • 异步物化视图
          • 异步物化视图常见问题
          • 最佳实践
          • 异步物化视图概述
          • 创建、查询与维护异步物化视图
      • 高效去重
        • BITMAP 精准去重
        • HLL 近似去重
      • 优化技术原理
        • TOPN 查询优化
        • 统计信息
        • Pipeline 执行引擎
        • 查询优化器介绍
        • Runtime Filter
      • 查询调优概述
        • 调优概述
        • 诊断工具
        • 分析工具
        • 调优流程
      • 查询优化实践
        • 常见调优参数
        • 计划调优
          • 使用 Hint 控制代价改写
          • 使用异步物化视图透明改写
          • 使用 Leading Hint 控制 Join 顺序
          • 优化表 Schema 设计
          • 使用分区裁剪优化扫表
          • 优化索引设计和使用
          • 使用 Hint 调整 Join Shuffle 方式
          • DML 计划调优
          • 使用 Colocate Group 优化 Join
          • 使用同步物化视图透明改写
          • 使用 SQL Cache 加速查询
        • 执行调优
          • 数据倾斜处理
          • RuntimeFilter 的等待时间调整
          • 并行度调优
    • 数据查询
      • 连接(JOIN)
      • 子查询
      • 复杂类型查询
      • 列转行 (Lateral View)
      • MySQL 兼容性
      • 聚合多维分析
      • 分析函数(窗口函数)
      • 公用表表达式(CTE)
      • 自定义函数
        • 别名函数
        • Java UDF, UDAF, UDTF
    • 数据导出
      • SELECT INTO OUTFILE
      • MySQL Dump
      • 最佳实践
      • 数据导出概述
      • Export
    • 数据导入
      • 高并发导入优化(Group Commit)
      • 异常数据处理
      • 导入高可用性
      • 导入时实现数据转换
      • 导入最佳实践
      • 数据源
        • Kafka
        • Snowflake
        • S3 兼容存储
        • Google Cloud Storage
        • 从其他 TP 系统迁移数据
        • Azure Storage
        • 腾讯云 COS
        • MinIO
        • HDFS
        • 阿里云 OSS
        • 华为云 OBS
        • 从其他 AP 系统迁移数据
        • Flink
        • Redshift
        • Amazon S3
        • 本地文件
        • BigQuery
      • 导入方式
        • Broker Load
        • MySQL Load
        • Insert Into Values
        • Stream Load
        • Insert Into Select
        • Routine Load
      • 文件格式
        • CSV
        • JSON
        • Parquet
        • ORC
      • 复杂数据类型
        • MAP
        • Variant
        • JSON
        • STRUCT
        • Bitmap
        • HLL
        • ARRAY
    • BI工具接入
      • Sugar
      • Navicat
      • Tableau
      • DBeaver
      • 永洪BI
      • FineBI(帆软)
    • 数据库连接
      • 通过 MySQL 协议连接
      • 基于 Arrow Flight SQL 的高速数据传输链路
    • 湖仓一体
      • 分析 S3或HDFS 上的文件
      • 湖仓一体概述
      • SQL 方言兼容
      • 弹性计算节点
      • 云服务认证接入
      • 元数据缓存
      • 外表统计信息
      • 数据缓存
      • 数据库分析
        • MySQL
        • JDBC Catalog
        • Oracle
        • OceanBase
        • SAP HANA
        • 阿里云 MaxCompute
        • ClickHouse
        • PostgreSQL
        • IBM Db2
        • SQL Server
        • Elasticsearch
      • 湖仓一体最佳实践
        • 使用 PALO 和 Paimon
        • 使用 PALO 和 Iceberg
        • 使用 PALO 和 Hudi
        • 使用 PALO 和 LakeSoul
      • 数据湖构建
        • Iceberg
        • Hive
      • 数据湖分析
        • Hudi Catalog
        • 阿里云 DLF
        • Iceberg Catalog
        • Paimon Catalog
        • Hive Catalog
    • 数据表设计
      • 行业混存
      • 数据压缩
      • Schema 变更
      • 数据类型
      • 自增列
      • 概览
      • 数据库建表最佳实践
      • 冷热数据分层
        • SSD 和 HDD 层级存储
        • 远程存储
        • 冷热数据分层概述
      • 表索引
        • 倒排索引
        • 前缀索引与排序键
        • N-Gram 索引
        • BloomFilter 索引
        • 索引概述
      • 数据划分
        • 数据分桶
        • 数据分布概念
        • 动态分区
        • 自动分区
        • 手动分区
        • 常见文档
      • 数据模型
        • 使用注意
        • 模型概述
        • 主键模型
        • 明细模型
        • 聚合模型
  • 版本发布历史
    • 百度数据仓库 Palo 2.0 版本全新发布
  • SQL手册
    • 字面常量
    • 别名
    • SQL-手册
    • 数据类型
    • SQL语句
    • 注释
    • 内置函数
    • 白名单管理
    • SQL操作符
    • 内置函数
      • 聚合函数
      • 位操作函数
      • 字符串函数
      • 条件函数
      • 数学函数
      • JSON解析函数
      • 类型转换函数
      • 格式转换函数
      • 通用函数
      • 时间和日期函数
      • BITMAP函数
      • 窗口函数
      • 哈希函数
      • HLL函数
    • 语法帮助
      • DML
        • INSERT
        • ROUTINE-LOAD
        • RESTORE
        • SELECT-INTO-OUTFILE
        • ALTER-ROUTINE-LOAD
        • BROKER-LOAD
        • BACKUP
        • EXPORT
        • STREAM-LOAD
      • DDL
        • CREATE-FILE
        • DROP-RESOURCE
        • CREATE-RESOURCE
        • CREATE-MATERIALIZED-VIEW
        • DROP-RESROUCE
        • CREATE-TABLE
        • DROP-REPOSITORY
        • CREATE-REPOSITORY
        • CREATE-ODBC-TABLE
      • 信息查看语句
        • SHOW-BACKUP
        • SHOW-ALTER-TABLE-MATERIALIZED-VIEW
        • SHOW-SNAPSHOT
        • SHOW-ROUTINE-LOAD
        • SHOW-CREATE-ROUTINE-LOAD
        • SHOW-ROLES
        • SHOW-GRANTS
        • SHOW-EXPORT
        • SHOW-ROUTINE-LOAD-TASK
        • SHOW-REPOSITORIES
        • SHOW-LOAD
        • SHOW-RESOURCES
        • SHOW-RESTORE
        • SHOW-PROPERTY
        • SHOW-FILE
      • 辅助命令
        • PAUSE-ROUTINE-LOAD
        • STOP-ROUTINE-LOAD
        • ALTER-ROUTINE-LOAD
        • CANCEL-LOAD
        • RESUME-ROUTINE-LOAD
      • 账户管理
        • SET-PROPERTY
        • REVOKE
        • GRANT
        • CREATE-ROLE
        • DROP-ROLE
        • CREATE-USER
        • DROP-USER
        • SET-PASSWORD
  • 快速入门
    • 快速上手
    • 存算分离
    • 存算一体
  • 典型实践
    • 如何开启Debug日志
    • 导入分析
    • 查询分析
  • 操作手册
    • 权限和子用户
    • 存算一体
      • 连接集群
      • 查询分析
      • 监控告警
        • 监控指标
        • 告警配置
      • 备份恢复
        • 通过管理页面备份与恢复
        • 备份与恢复
      • 权限管理
        • 集群权限
        • 控制台权限
      • 集群管理
        • 集群创建
        • 停止与删除
        • 重置管理员密码
        • 集群扩缩容
        • 集群详情
    • 存算分离
      • 连接集群
      • 计算组管理
        • 重启计算组
        • 创建计算组
      • 监控告警
        • 监控指标
        • 告警配置
      • 权限管理
        • 集群权限
        • 控制台权限
      • 集群管理
        • 停止与删除
        • 创建集群
        • 重置管理员密码
        • 集群详情
  • 服务等级协议SLA
    • 服务等级协议(SLA)v1.0
  • 产品概述
    • 系统架构
    • 产品特点
    • 产品介绍
  • 视频专区
    • 操作指南
    • 产品简介
  • 产品定价
    • 预付费
    • 计费说明
    • 后付费
  • 文档中心
  • arrow
  • 数据仓库PALO
  • arrow
  • 开发指南
  • arrow
  • 湖仓一体
  • arrow
  • 数据库分析
  • arrow
  • Elasticsearch
本页目录
  • 使用限制
  • 创建 Catalog
  • 参数说明
  • 列类型映射
  • Array 类型
  • 最佳实践
  • 过滤条件下推
  • 启用列式扫描优化查询速度 (enable_docvalue_scan=true)
  • 探测 Keyword 类型字段
  • 开启节点自动发现,默认为 true(nodes_discovery=true)
  • ES 集群是否开启 HTTPS 访问模式
  • 查询用法
  • 时间类型字段使用建议
  • 获取 ES 元数据字段 ID
  • 获取全局有序的查询结果
  • 修改 scroll 请求的 batch 大小
  • 常见问题
  • 附录
  • PALO 查询 ES 原理

Elasticsearch

更新时间:2025-08-21

Elasticsearch Catalog 除了支持自动映射 ES 元数据外,也可以利用 PALO 的分布式查询规划能力和 ES(Elasticsearch) 的全文检索能力相结合,提供更完善的 OLAP 分析场景解决方案:

  1. ES 中的多 index 分布式 Join 查询。
  2. PALO 和 ES 中的表联合查询,更复杂的全文检索过滤。

使用限制

支持 Elasticsearch 5.x 及以上版本。

创建 Catalog

SQL
1CREATE CATALOG es PROPERTIES (
2    "type"="es",
3    "hosts"="http://127.0.0.1:9200"
4);

因为 Elasticsearch 没有 Database 的概念,所以连接 ES 后,会自动生成一个唯一的 Database:default_db。

并且在通过 SWITCH 命令切换到 ES Catalog 后,会自动切换到 default_db。无需再执行 USE default_db 命令。

参数说明

参数 是否必须 默认值 说明
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 消耗
include_hidden_index 否 false 是否包含隐藏的索引,默认为 false。

注意:

  1. 认证方式目前仅支持 Http Basic 认证,并且需要确保该用户有访问:/_cluster/state/、_nodes/http 等路径和 Index 的读权限; 集群未开启安全认证,用户名和密码不需要设置。
  2. 5.x 和 6.x 中一个 Index 中的多个 type 默认取第一个。

列类型映射

ES Type PALO Type Comment
null null
boolean boolean
byte tinyint
short smallint
integer int
long bigint
unsigned_long largeint
float float
half_float float
double double
scaled_float double
date date 仅支持 default/yyyy-MM-dd HH:mm:ss/yyyy-MM-dd/epoch_millis 格式
keyword string
text string
ip string
constant_keyword string
wildcard string
nested json
object json
other unsupported

Array 类型

Elasticsearch 没有明确的数组类型,但是它的某个字段可以含有 0 个或多个值。

为了表示一个字段是数组类型,可以在索引映射的 _meta 部分添加特定的doris结构注释。

举例说明,假设有一个索引 doc 包含以下的数据结构:

JSON
1{
2  "array_int_field": [1, 2, 3, 4],
3  "array_string_field": ["doris", "is", "the", "best"],
4  "id_field": "id-xxx-xxx",
5  "timestamp_field": "2022-11-12T12:08:56Z",
6  "array_object_field": [
7    {
8      "name": "xxx",
9      "age": 18
10    }
11  ]
12}

该结构的数组字段可以通过使用以下命令将字段属性定义添加到目标索引映射的_meta.doris属性来定义。

Shell
1# ES 7.x and above
2curl -X PUT "localhost:9200/doc/_mapping?pretty" -H 'Content-Type:application/json' -d '
3{
4    "_meta": {
5        "doris":{
6            "array_fields":[
7                "array_int_field",
8                "array_string_field",
9                "array_object_field"
10            ]
11        }
12    }
13}'
14
15# ES 6.x and before
16curl -X PUT "localhost:9200/doc/_mapping/_doc?pretty" -H 'Content-Type: application/json' -d '
17{
18    "_meta": {
19        "doris":{
20            "array_fields":[
21                "array_int_field",
22                "array_string_field",
23                "array_object_field"
24            ]
25        }
26    }
27}

array_fields:用来表示是数组类型的字段。

最佳实践

过滤条件下推

ES Catalog 支持过滤条件的下推:过滤条件下推给 ES,这样只有真正满足条件的数据才会被返回,能够显著的提高查询性能和降低 PALO 和 Elasticsearch 的 CPU、memory、IO 使用量

下面的操作符 (Operators) 会被优化成如下 ES Query:

SQL syntax ES 5.x+ syntax
= term query
in terms query
> , < , >= , ⇐ range query
and bool.filter
or bool.should
not bool.must_not
not in bool.must_not + terms query
is_not_null exists query
is_null bool.must_not + exists query
esquery ES 原生 json 形式的 QueryDSL

启用列式扫描优化查询速度 (enable_docvalue_scan=true)

设置 "enable_docvalue_scan" = "true"

开启后 PALO 从 ES 中获取数据会遵循以下两个原则:

  • 尽力而为: 自动探测要读取的字段是否开启列式存储 (doc_value: true),如果获取的字段全部有列存,PALO 会从列式存储中获取所有字段的值
  • 自动降级: 如果要获取的字段只要有一个字段没有列存,所有字段的值都会从行存_source中解析获取

优势

默认情况下,PALO On ES 会从行存也就是_source中获取所需的所有列,_source的存储采用的行式+json 的形式存储,在批量读取性能上要劣于列式存储,尤其在只需要少数列的情况下尤为明显,只获取少数列的情况下,docvalue 的性能大约是_source 性能的十几倍

注意

  1. text类型的字段在 ES 中是没有列式存储,因此如果要获取的字段值有text类型字段会自动降级为从_source中获取
  2. 在获取的字段数量过多的情况下 (>= 25),从docvalue中获取字段值的性能会和从_source中获取字段值基本一样
  3. keyword类型字段由于ignore_above参数的限制,对于超过该限制的长文本字段会忽略,所以可能会出现结果为空的情况。此时需要关闭enable_docvalue_scan,从_source中获取结果。

探测 Keyword 类型字段

设置 "enable_keyword_sniff" = "true"

在 ES 中可以不建立 index 直接进行数据导入,这时候 ES 会自动创建一个新的索引,针对字符串类型的字段 ES 会创建一个既有text类型的字段又有keyword类型的字段,这就是 ES 的 multi fields 特性,mapping 如下:

JSON
1"k4": {
2   "type": "text",
3   "fields": {
4      "keyword": {   
5         "type": "keyword",
6         "ignore_above": 256
7      }
8   }
9}

对 k4 进行条件过滤时比如=,PALO On ES 会将查询转换为 ES 的 TermQuery

SQL 过滤条件:

SQL
1k4 = "Doris On ES"

转换成 ES 的 query DSL 为:

JSON
1"term" : {
2    "k4": "Doris On ES"
3
4}

因为 k4 的第一字段类型为text,在数据导入的时候就会根据 k4 设置的分词器 (如果没有设置,就是 standard 分词器) 进行分词处理得到 Doris、on、es 三个 Term,如下 ES analyze API 分析:

JSON
1POST /_analyze
2{
3  "analyzer": "standard",
4  "text": "Doris On ES"
5}

分词的结果是:

JSON
1{
2   "tokens": [
3      {
4         "token": "doris",
5         "start_offset": 0,
6         "end_offset": 5,
7         "type": "<ALPHANUM>",
8         "position": 0
9      },
10      {
11         "token": "on",
12         "start_offset": 6,
13         "end_offset": 8,
14         "type": "<ALPHANUM>",
15         "position": 1
16      },
17      {
18         "token": "es",
19         "start_offset": 9,
20         "end_offset": 11,
21         "type": "<ALPHANUM>",
22         "position": 2
23      }
24   ]
25}

查询时使用的是:

JSON
1"term" : {
2    "k4": "Doris On ES"
3}

Doris On ES这个 term 匹配不到词典中的任何 term,不会返回任何结果,而启用enable_keyword_sniff: true会自动将k4 = "Doris On ES"转换成k4.keyword = "Doris On ES"来完全匹配 SQL 语义,转换后的 ES query DSL 为:

JSON
1"term" : {
2    "k4.keyword": "Doris On ES"
3}

k4.keyword 的类型是keyword,数据写入 ES 中是一个完整的 term,所以可以匹配

开启节点自动发现,默认为 true(nodes_discovery=true)

设置 "nodes_discovery" = "true"

当配置为 true 时,PALO 将从 ES 找到所有可用的相关数据节点 (在上面分配的分片)。如果 ES 数据节点的地址没有被 PALO BE 访问,则设置为 false。ES 集群部署在与公共 Internet 隔离的内网,用户通过代理访问

ES 集群是否开启 HTTPS 访问模式

设置 "ssl" = "true"

目前会 FE/BE 实现方式为信任所有,这是临时解决方案,后续会使用真实的用户配置证书

查询用法

完成在 PALO 中建立 ES 外表后,除了无法使用 PALO 中的数据模型 (Rollup、预聚合、物化视图等) 外并无区别

基本查询

SQL
1select * from es_table where k1 > 1000 and k3 ='term' or k4 like 'fu*z_'

扩展的 esquery(field, QueryDSL)

通过esquery(field, QueryDSL)函数将一些无法用 sql 表述的 query 如 match_phrase、geoshape 等下推给 ES 进行过滤处理,esquery的第一个列名参数用于关联index,第二个参数是 ES 的基本Query DSL的 json 表述,使用花括号{}包含,json 的root key有且只能有一个,如 match_phrase、geo_shape、bool 等

match_phrase 查询:

Plain Text
1select * from es_table where esquery(k4, '{
2        "match_phrase": {
3           "k4": "doris on es"
4        }
5    }');

geo 相关查询:

Plain Text
1select * from es_table where esquery(k4, '{
2      "geo_shape": {
3         "location": {
4            "shape": {
5               "type": "envelope",
6               "coordinates": [
7                  [
8                     13,
9                     53
10                  ],
11                  [
12                     14,
13                     52
14                  ]
15               ]
16            },
17            "relation": "within"
18         }
19      }
20   }');

bool 查询:

Plain Text
1select * from es_table where esquery(k4, ' {
2         "bool": {
3            "must": [
4               {
5                  "terms": {
6                     "k1": [
7                        11,
8                        12
9                     ]
10                  }
11               },
12               {
13                  "terms": {
14                     "k2": [
15                        100
16                     ]
17                  }
18               }
19            ]
20         }
21      }');

时间类型字段使用建议

提示: 仅 ES 外表适用,ES Catalog 中自动映射日期类型为 Date 或 Datetime

在 ES 中,时间类型的字段使用十分灵活,但是在 ES 外表中如果对时间类型字段的类型设置不当,则会造成过滤条件无法下推

创建索引时对时间类型格式的设置做最大程度的格式兼容:

JSON
1 "dt": {
2     "type": "date",
3     "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
4 }

在 PALO 中建立该字段时建议设置为date或datetime,也可以设置为varchar类型,使用如下 SQL 语句都可以直接将过滤条件下推至 ES:

SQL
1select * from doe where k2 > '2020-06-21';
2
3select * from doe where k2 < '2020-06-21 12:00:00'; 
4
5select * from doe where k2 < 1593497011; 
6
7select * from doe where k2 < now();
8
9select * from doe where k2 < date_format(now(), '%Y-%m-%d');

注意:

  • 在 ES 中如果不对时间类型的字段设置format, 默认的时间类型字段格式为

    SQL
    1strict_date_optional_time||epoch_millis
  • 导入到 ES 的日期字段如果是时间戳需要转换成ms, ES 内部处理时间戳都是按照ms进行处理的,否则 ES 外表会出现显示错误

获取 ES 元数据字段 ID

导入文档在不指定 _id 的情况下,ES 会给每个文档分配一个全局唯一的 _id 即主键,用户也可以在导入时为文档指定一个含有特殊业务意义的 _id;

如果需要在 ES 外表中获取该字段值,建表时可以增加类型为varchar的_id字段:

SQL
1CREATE EXTERNAL TABLE `doe` (
2  `_id` varchar COMMENT "",
3  `city`  varchar COMMENT ""
4) ENGINE=ELASTICSEARCH
5PROPERTIES (
6"hosts" = "http://127.0.0.1:8200",
7"user" = "root",
8"password" = "root",
9"index" = "doe"
10}

如果需要在 ES Catalog 中获取该字段值,请设置 "mapping_es_id" = "true"

注意:

  1. _id 字段的过滤条件仅支持=和in两种
  2. _id 字段必须为 varchar 类型

获取全局有序的查询结果

在相关性排序、优先展示重要内容等场景中 ES 查询结果按照 score 来排序非常有用。PALO 查询 ES 为了充分利用 MPP 的架构优势,是按照 ES 索引的 shard 的分布情况来拉取数据。
为了得到全局有序的排序结果,需要对 ES 进行单点查询。可以通过 session 变量 enable_es_parallel_scroll (默认为 true)来控制。
当设置 enable_es_parallel_scroll=false 时,PALO 将会向 ES 集群发送不带 shard_preference 和 sort 信息的 scroll 查询,从而得到全局有序的结果。
注意: 在查询结果集较大时,谨慎使用。

修改 scroll 请求的 batch 大小

scroll 请求的 batch 默认为 4064。可以通过 session 变量 batch_size 来修改。

常见问题

  1. 是否支持 X-Pack 认证的 ES 集群

    支持所有使用 HTTP Basic 认证方式的 ES 集群

  2. 一些查询比请求 ES 慢很多

    是,比如_count 相关的 query 等,ES 内部会直接读取满足条件的文档个数相关的元数据,不需要对真实的数据进行过滤

  3. 聚合操作是否可以下推

    目前 PALO On ES 不支持聚合操作如 sum, avg, min/max 等下推,计算方式是批量流式的从 ES 获取所有满足条件的文档,然后在 PALO 中进行计算

附录

PALO 查询 ES 原理

Plain
1+----------------------------------------------+
2|                                              |
3| Doris      +------------------+              |
4|            |       FE         +--------------+-------+
5|            |                  |  Request Shard Location
6|            +--+-------------+-+              |       |
7|               ^             ^                |       |
8|               |             |                |       |
9|  +-------------------+ +------------------+  |       |
10|  |            |      | |    |             |  |       |
11|  | +----------+----+ | | +--+-----------+ |  |       |
12|  | |      BE       | | | |      BE      | |  |       |
13|  | +---------------+ | | +--------------+ |  |       |
14+----------------------------------------------+       |
15   |        |          | |        |         |          |
16   |        |          | |        |         |          |
17   |    HTTP SCROLL    | |    HTTP SCROLL   |          |
18+-----------+---------------------+------------+       |
19|  |        v          | |        v         |  |       |
20|  | +------+--------+ | | +------+-------+ |  |       |
21|  | |               | | | |              | |  |       |
22|  | |   DataNode    | | | |   DataNode   +<-----------+
23|  | |               | | | |              | |  |       |
24|  | |               +<--------------------------------+
25|  | +---------------+ | | |--------------| |  |       |
26|  +-------------------+ +------------------+  |       |
27|   Same Physical Node                         |       |
28|                                              |       |
29|           +-----------------------+          |       |
30|           |                       |          |       |
31|           |      MasterNode       +<-----------------+
32| ES        |                       |          |
33|           +-----------------------+          |
34+----------------------------------------------+
  1. FE 会请求建表指定的主机,获取所有节点的 HTTP 端口信息以及 index 的 shard 分布信息等,如果请求失败会顺序遍历 host 列表直至成功或完全失败
  2. 查询时会根据 FE 得到的一些节点信息和 index 的元数据信息,生成查询计划并发给对应的 BE 节点
  3. BE 节点会根据就近原则即优先请求本地部署的 ES 节点,BE 通过HTTP Scroll方式流式的从 ES index 的每个分片中并发的从_source或docvalue中获取数据
  4. PALO 计算完结果后,返回给用户

上一篇
SQL Server
下一篇
湖仓一体最佳实践