Skip to main content

A service to convert MySQL SQL queries to Elasticsearch DSL using MCP framework

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sqltodsltranslator_mcp-0.1.1-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file sqltodsltranslator_mcp-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for sqltodsltranslator_mcp-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0a127723e5d18394b6ce30c4169b66b61d9e293ebc36cb8586138869d252ba54
MD5 401fa8298ccb0cffb9598ed5f5ce387d
BLAKE2b-256 d4810fe9e14a01f0c832c9ab33245a1c7cb4832a4ebab6914088414ea993e763

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page