SQL to Elasticsearch DSL Translator
项目简介
SQL to Elasticsearch DSL Translator 是一个基于 MCP (Model Conversion Platform) 框架构建的服务,可以将 MySQL SQL 查询语句转换为 Elasticsearch DSL (Domain Specific Language) 查询。
该工具支持常见的 SQL 操作,包括:
- SELECT 查询
- WHERE 条件过滤
- GROUP BY 聚合
- ORDER BY 排序
- LIMIT 限制结果数量
- 函数操作(COUNT, AVG, SUM等)
- UNION 和 MINUS 操作
这个转换器可以帮助熟悉 SQL 语法但不熟悉 Elasticsearch DSL 的开发者快速构建 Elasticsearch 查询。
整个项目全是基于 ai 的自主生成。 支持版本: Elasticsearch 7.17
部署指南
环境要求
- Python 3.13 或更高版本
- pip 或 poetry 用于依赖管理
安装步骤
-
克隆项目代码:
git clone <repository-url> cd SqlToDslTranslator-MCP
-
安装依赖:
# 使用 pip pip install -e . # 或使用 poetry poetry install
-
运行服务:
python -m SqlToDslTranslator_MCP
使用示例
基本查询转换
将简单的 SQL 查询转换为 Elasticsearch DSL:
from src.SqlToDslTranslator_MCP.server import SQLToESDSLConverter
# 创建转换器实例
converter = SQLToESDSLConverter()
sql = "SELECT id, name, age FROM users WHERE age > 18 ORDER BY age LIMIT 10"
dsl = converter.convert(sql)
print(dsl)
聚合查询
支持 GROUP BY 和聚合函数:
sql = "SELECT department, COUNT(*) as count FROM employees GROUP BY department"
dsl = converter.convert(sql)
print(dsl)
复杂条件查询
支持多种条件和函数:
sql = "SELECT name, ROUND(age/10)*10 as age_group, COUNT(*) FROM users WHERE status = 'active' GROUP BY ROUND(age/10)*10 HAVING COUNT(*) > 5"
dsl = converter.convert(sql)
print(dsl)
通过MCP工具使用
作为MCP工具使用时,可以直接调用convert函数:
from src.SqlToDslTranslator_MCP.server import convert
result = convert("SELECT COUNT(*) FROM logs WHERE level = 'ERROR'")
print(result)
命令行使用
也可以通过命令行工具进行转换:
echo "SELECT COUNT(*) FROM logs WHERE level = 'ERROR'" | python -m SqlToDslTranslator_MCP
Metadata
Release files for sqltodsltranslator-mcp 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sqltodsltranslator_mcp-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Release files / sqltodsltranslator_mcp-0.1.1-py3-none-any.whl
| Download URL | sqltodsltranslator_mcp-0.1.1-py3-none-any.whl |
|---|---|
| Size | 10.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0a127723e5d18394b6ce30c4169b66b61d9e293ebc36cb8586138869d252ba54
|
|
BLAKE2b-256 checksum How to use checksums |
d4810fe9e14a01f0c832c9ab33245a1c7cb4832a4ebab6914088414ea993e763
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.5
|