# SqlQueryES **Repository Path**: hujielala/sql-query-es ## Basic Information - **Project Name**: SqlQueryES - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-10-21 - **Last Updated**: 2025-10-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Elasticsearch SQL Client 一个基于Web的Elasticsearch客户端,支持使用SQL语法查询Elasticsearch数据,同时提供原生DSL查询功能。 ## 项目概述 本项目旨在为Elasticsearch提供一个用户友好的Web界面,允许用户使用熟悉的SQL语法来查询数据,而无需学习复杂的DSL查询语法。项目包含前后端两部分: - 后端:Spring Boot应用,提供REST API接口 - 前端:Vue.js应用,提供图形化用户界面 ## 功能特性 ### SQL查询支持 - 支持基本的SELECT查询语句转换 - 支持WHERE条件转换 - 支持多种比较操作符(=, !=, >, >=, <, <=) - 支持LIKE操作符转换为wildcard查询 - 支持IN操作符转换为terms查询 - 支持AND和OR逻辑操作符 - 支持LIMIT和OFFSET子句 - 支持包含特殊字符的索引名称(使用方括号[]包装) ### Elasticsearch操作 - 连接管理 - 索引浏览 - 数据查询和展示 - 支持原生DSL查询 - 分页浏览数据 ### 用户界面 - 直观的连接配置界面 - 索引列表展示 - SQL和DSL查询编辑器 - 结构化数据展示 - JSON数据高亮显示和复制 ## 技术栈 ### 后端 - Spring Boot 3.5.6 - Elasticsearch Java API Client 8.10.0 - JSqlParser 4.7 (SQL解析) - Maven构建工具 ### 前端 - Vue.js 3.2 - Axios (HTTP客户端) - Vite (构建工具) ## 项目结构 ``` . ├── back/ # 后端代码 │ ├── src/ │ │ ├── main/ │ │ │ ├── java/ # Java源代码 │ │ │ └── resources/ # 配置文件 │ │ └── test/ # 测试代码 │ └── pom.xml # Maven配置文件 └── front/ # 前端代码 ├── src/ # Vue源代码 ├── package.json # npm配置文件 └── vite.config.js # Vite配置文件 ``` ## 快速开始 ### 后端启动 ```bash cd back mvn spring-boot:run ``` 服务将在 http://localhost:8080 上运行 ### 前端启动 ```bash cd front npm install npm run dev ``` 前端将在 http://localhost:5173 上运行 ### 使用流程 1. 启动后端和前端服务 2. 打开浏览器访问 http://localhost:5173 3. 在左侧边栏配置Elasticsearch连接信息(主机地址和端口) 4. 点击"连接"按钮连接到Elasticsearch 5. 连接成功后,索引列表将显示在左侧 6. 点击任意索引开始查询数据 7. 在顶部查询区域输入SQL或DSL语句 8. 点击"执行SQL"或"执行DSL"按钮执行查询 9. 查询结果将在下方表格中展示 ## 支持的SQL语法 ### SELECT语句 ```sql SELECT * FROM table WHERE conditions ``` ### WHERE条件 - 比较操作符: =, !=, >, >=, <, <= - LIKE操作符: field LIKE '%pattern%' - IN操作符: field IN (value1, value2, ...) - 逻辑操作符: AND, OR - 括号分组: (condition1 AND condition2) OR condition3 ### LIMIT和OFFSET ```sql SELECT * FROM table WHERE conditions LIMIT 10 OFFSET 5 ``` ### 特殊索引名称处理 对于包含特殊字符(如连字符)的索引名称,请使用方括号包装: ```sql SELECT * FROM [my-index-name] WHERE field = 'value' ``` ## API接口 ### Elasticsearch连接管理 - POST `/api/es/connect` - 连接到Elasticsearch实例 - GET `/api/es/indices` - 获取所有索引列表 - GET `/api/es/indices/{indexName}/data` - 获取索引数据 ### SQL查询 - POST `/api/es/sql` - 执行SQL查询 - POST `/api/sql/to-dsl` - 将SQL转换为DSL ### DSL查询 - POST `/api/es/dsl` - 执行DSL查询 ## 使用示例 ### 1. 基本相等查询 ```sql SELECT * FROM users WHERE name = 'John' ``` ### 2. 范围查询 ```sql SELECT * FROM products WHERE price > 100 AND price <= 500 ``` ### 3. 复合查询 ```sql SELECT * FROM users WHERE age >= 18 AND (city = 'Beijing' OR city = 'Shanghai') LIMIT 10 ``` ### 4. LIKE查询 ```sql SELECT * FROM articles WHERE title LIKE '%Java%' ``` ### 5. IN查询 ```sql SELECT * FROM orders WHERE status IN ('pending', 'shipped') ``` ### 6. 特殊索引名称查询 ```sql SELECT * FROM [my-blog-posts] WHERE author = 'Alice' ``` ## 开发指南 ### 后端开发 1. 导入项目到IDE(推荐IntelliJ IDEA) 2. 确保安装了Java 17+和Maven 3. 运行`mvn clean install`安装依赖 4. 启动应用:`mvn spring-boot:run` ### 前端开发 1. 确保安装了Node.js和npm 2. 运行`npm install`安装依赖 3. 启动开发服务器:`npm run dev` 4. 构建生产版本:`npm run build` ## Docker部署 项目支持通过Docker进行部署,包括手动部署和Jenkins自动化部署两种方式。 ### 手动构建和部署 #### 构建后端Docker镜像 ```bash cd back mvn clean package -DskipTests docker build -t sql-query-es-backend . ``` #### 构建前端Docker镜像 ```bash cd front npm install npm run build docker build -t sql-query-es-frontend . ``` #### 运行容器 ```bash # 运行后端容器 docker run -d \ --name sql-query-es-backend \ -p 3083:8080 \ sql-query-es-backend # 运行前端容器 docker run -d \ --name sql-query-es-frontend \ -p 3084:80 \ sql-query-es-frontend ``` 访问地址: - 后端API: http://localhost:3083 - 前端界面: http://localhost:3084 ## 扩展功能 该项目具有良好的扩展性,可以轻松添加以下功能: - 支持更多SQL语法(JOIN、GROUP BY等) - 数据导入/导出功能 - 索引管理(创建、删除、更新映射) - 用户认证和权限管理 - 查询历史记录 - 数据可视化图表 ## 贡献 欢迎提交Issue和Pull Request来改进这个项目。 ## 许可证 该项目基于MIT许可证开源。