Open Distro for Elasticsearch SQL开发者指南:从零构建插件、运行测试到提交第一个PR
Open Distro for Elasticsearch SQL开发者指南从零构建插件、运行测试到提交第一个PR【免费下载链接】sql Open Distro SQL Plugin项目地址: https://gitcode.com/gh_mirrors/sq/sqlOpen Distro for Elasticsearch SQL 插件让你用熟悉的 SQL 语法直接查询 Elasticsearch支持聚合、JOIN、子查询、PPL 管道处理语言等能力。本指南面向第一次接触该项目的开发者带你从零完成ES SQL 插件开发全流程配置环境、用 Gradle 构建插件、读懂测试体系、跑通集成测试最后了解如何规范地提交第一个 PR。无需深入源码跟着步骤走即可完成你的首次贡献。一、快速了解项目结构SQL 插件代码在哪里克隆仓库后即可看到清晰的模块化布局各 Gradle 模块职责分明git clone https://gitcode.com/gh_mirrors/sq/sql模块路径职责sql/SQL 语言处理器ANTLR 词法/语法解析ppl/PPL 管道处理语言处理器core/核心查询引擎查询规划与执行elasticsearch/Elasticsearch 存储引擎plugin/Elasticsearch 插件入口代码protocol/请求/响应协议格式化integ-test/集成测试与对比测试sql-cli/、sql-jdbc/、sql-odbc/、workbench/CLI 工具、JDBC/ODBC 驱动、Kibana 查询工作台开发文档集中在docs/目录开发者指南在docs/developing.rst架构说明在docs/dev/Architecture.md测试体系说明在docs/dev/Testing.md。建议从这几个文件入手建立全局认知。二、环境准备JDK 14 与 Gradle 构建配置✅3 步完成环境配置安装 JDK 14插件依赖 Elasticsearch 测试框架必须使用高版本 JDK 构建。安装后配置JAVA_HOME环境变量执行java -version验证。导入 IDE用 IntelliJ IDEA 打开项目即可。⚠️ 注意将 Java 语言级别设为Java 8否则插件无法运行在 JDK 8 的 Elasticsearch 上。添加 License 头项目采用 Apache 2.0 协议新文件必须带 License 头否则 Gradle 的 license 检查会让构建直接失败。建议在 IDE 中配置文件版权模板自动生成。 想快速体验执行./gradlew :plugin:run即可启动一个已安装该 SQL 插件的本地 Elasticsearch直接测试查询效果。三、Gradle 常用构建任务5 个命令覆盖日常开发项目使用 Gradle 构建系统日常开发只需要记住这几个任务./gradlew build # 完整构建编译 检查 全部测试 ./gradlew test # 只跑单元测试 ./gradlew checkstyle # 只跑代码风格检查 ./gradlew assemble # 生成 jar/zip 到 build/distributions ./gradlew :integ-test:integTest # 跑集成测试较慢实用技巧按模块构建./gradlew :core:build只构建核心引擎模块。单独跑某个集成测试类./gradlew :integ-test:integTest -Dtests.class*QueryIT。构建卡住时先./gradlew stop杀掉多余 Gradle 守护进程再./gradlew clean ./gradlew build。代码风格遵循 Google Checkstyle 规则2 空格缩进、行宽 ≤ 100、禁止通配符导入等规则文件在config/checkstyle/google_checks.xml违规会导致构建失败。测试覆盖率报告由 JaCoCo 生成位于模块/build/reports/jacoco。四、读懂测试体系对比测试是最大亮点 该项目的测试不只是断言非空而是自研了对比测试框架用同一批 SQL 查询同时跑 OpenDistro SQL 和 H2、SQLite 等参考数据库自动比对结果集大幅提升正确性信心。测试体系分为三层单元测试放在各模块src/test/java注意测对抽象层级、合理 mock 依赖避免写成伪集成测试。集成测试基于 Elasticsearch 测试框架每个测试类自动拉起内存集群通过 REST 客户端验证功能继承SQLIntegTestCase并加载预置测试索引如Index.ACCOUNT即可开始写用例。Doctest 文档测试doctest/模块让docs/里的文档示例可直接执行防止文档与代码脱节单独执行用./gradlew doctest要求本机 9200 端口无 ES 实例。写测试用例时可对照docs/developing.rst中的测试清单覆盖函数、SELECT-GROUP BY-HAVING、别名、子查询、JOIN、嵌套字段、UNION、DELETE/SHOW/DESCRIBE、以及 JDBC/CSV/Raw 等多种响应格式。五、读懂查询流程改代码前先懂数据流 SQL 插件的查询链路是ANTLR 解析 → 语法/语义分析 → QueryPlanner 构建逻辑/物理计划 → 执行 → 格式化输出。遇到解析报错或类型错误时先定位属于哪一层能省下大量排查时间。深度原理可阅读docs/dev/SemanticAnalysis.md、docs/dev/NewSQLEngine.md与docs/dev/SubQuery.md。六、提交第一个 PR从规范提交到签核提交前检查清单依据CONTRIBUTING.md基于 master 最新代码创建独立分支聚焦单一改动不要顺带重排无关代码。为新代码路径补充单元测试确保本地./gradlew build全部通过。签核你的提交配置好user.name和user.email后使用git commit -s -m feat: xxx自动生成 Signed-off-by 行证明你对贡献代码的开源许可负责。发起 PR 前确认没有其他人已在处理相同问题重大改动建议先开 issue 讨论。另外别忘了大功能或增强值得在docs/dev/补充设计文档用户可见的功能变更可通过文档测试模板同步更新参考手册。完成以上流程你就已经走通了Open Distro for Elasticsearch SQL 插件开发的完整闭环环境 → 构建 → 测试 → 规范提交。祝你的第一个 PR 顺利合入【免费下载链接】sql Open Distro SQL Plugin项目地址: https://gitcode.com/gh_mirrors/sq/sql创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

如何用 Socket.IO 实现实时多人对战:GameHub.io 的 join、new-move、resign 事件流全拆解

如何用 Socket.IO 实现实时多人对战:GameHub.io 的 join、new-move、resign 事件流全拆解

如何用 Socket.IO 实现实时多人对战:GameHub.io 的 join、new-move、resign 事件流全拆解 【免费下载链接】gamehub.io Real-time multiplayer game server based on Node Express SocketIO MongoDB ElasticSearch 项目地址: https://gitcode.com/gh_mirrors/…

2026/8/25 8:32:48 阅读更多 →
带登录脚本的管理员账号有多危险:ScriptSentry与GPO劫持攻击链完整剖析

带登录脚本的管理员账号有多危险:ScriptSentry与GPO劫持攻击链完整剖析

带登录脚本的管理员账号有多危险:ScriptSentry与GPO劫持攻击链完整剖析 【免费下载链接】ScriptSentry ScriptSentry finds misconfigured and dangerous logon scripts. 项目地址: https://gitcode.com/gh_mirrors/sc/ScriptSentry ScriptSentry 是一款免费…

2026/8/25 8:32:48 阅读更多 →
AI大模型面试核心考察方向与高频问题解析

AI大模型面试核心考察方向与高频问题解析

1. AI大模型面试核心考察方向解析在当前的AI技术招聘中,大模型相关岗位的面试通常围绕五个核心维度展开:模型原理深度、工程实践能力、业务场景理解、前沿技术跟踪和代码实现水平。作为面试官,我设计的技术面问题往往从这五个角度切入&#x…

2026/8/25 8:31:48 阅读更多 →

最新新闻

AI时代招聘困境与智能化解决方案

AI时代招聘困境与智能化解决方案

1. 项目概述:当招聘遇上AI革命去年帮一家科技公司做招聘体系升级时,遇到个典型场景:HR负责人拿着算法岗位的简历问我:"这位候选人在顶级会议发了3篇论文,但学历只是普通一本,要不要约面试?…

2026/8/25 9:59:20 阅读更多 →
FanControl 免费风扇控制完整攻略:从装好软件到拖完第一条转速曲线

FanControl 免费风扇控制完整攻略:从装好软件到拖完第一条转速曲线

FanControl 免费风扇控制完整攻略:从装好软件到拖完第一条转速曲线 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub…

2026/8/25 9:59:20 阅读更多 →
Linux下Nvidia显卡风扇控制:从原理到自动化脚本实战

Linux下Nvidia显卡风扇控制:从原理到自动化脚本实战

1. 项目概述:为什么要在Linux下控制Nvidia显卡风扇?如果你在Linux系统下用Nvidia显卡跑过深度学习训练、玩过游戏,或者只是单纯地用它进行视频渲染,那你大概率遇到过显卡风扇“要么太吵,要么太热”的尴尬。默认情况下&…

2026/8/25 9:59:20 阅读更多 →
AI面试官系统:FastAPI与Agentic RAG的进化实践

AI面试官系统:FastAPI与Agentic RAG的进化实践

1. 项目概述:当AI面试官遇上可进化的博客系统去年帮一家跨国HR公司做技术咨询时,他们提出了个头疼的问题:每次招聘季都要处理数万份简历,但面试官团队根本面不过来。传统视频面试系统就像个"人工智障",只会机…

2026/8/25 9:59:20 阅读更多 →
AI智能面试系统:动态进化与博客集成实践

AI智能面试系统:动态进化与博客集成实践

1. 项目概述:AI智能面试博客系统的核心价值这个项目本质上是在构建一个具备自我进化能力的智能面试系统,同时以博客形式对外呈现。不同于传统静态博客或简单问答机器人,它的核心创新点在于"进化能力"——系统能够通过持续学习面试数…

2026/8/25 9:59:20 阅读更多 →
Redis核心知识点与面试高频考点解析

Redis核心知识点与面试高频考点解析

1. Redis面试核心知识点全景解析Redis作为当今最流行的内存数据库之一,已经成为中高级开发者面试的必考内容。根据我多年参与技术面试的经验,Redis相关的考察点主要集中在数据结构、持久化机制、高可用方案和实际应用场景四大维度。下面我将从面试官视角…

2026/8/25 9:58:17 阅读更多 →

日新闻

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

2026/8/25 0:00:34 阅读更多 →
Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run 🤗 Transformers directly in your browser, with no need for a server! 项目地址: https:/…

2026/8/25 0:00:34 阅读更多 →
数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

1. 项目概述:从“会做”到“会写”的竞赛核心跃迁“全国大学生数学建模竞赛”,这个名字对理工科学生来说,分量极重。每年,无数团队在三天三夜的时间里,为一个开放性问题绞尽脑汁,从建立模型、求解算法到编程…

2026/8/25 0:00:34 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/25 3:38:12 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 3:38:23 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/24 20:22:44 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/24 11:20:22 阅读更多 →