Skip to main content

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 用于依赖管理

安装步骤

  1. 克隆项目代码:

    git clone <repository-url>
    cd SqlToDslTranslator-MCP
    
  2. 安装依赖:

    # 使用 pip
    pip install -e .
    
    # 或使用 poetry
    poetry install
    
  3. 运行服务:

    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)

Table of built distributions (wheels) for sqltodsltranslator-mcp 0.1.1
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.1.1 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page