Open Distro for Elasticsearch SQL开发者指南:从零构建插件、运行测试到提交第一个PR

📅 2026/8/25 8:32:41
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),仅供参考