🚀 一键实现 SQL 转 Elasticsearch Mapping(支持字段注释 + meta 描述)
在日常后端开发中,我们经常会遇到这样的场景:
- 已经有一套 MySQL 表结构(SQL)
- 现在需要接入 Elasticsearch
- 需要手动编写 mapping(字段类型、结构、注释说明等)
👉 问题来了:
手写 mapping 不仅繁琐,还容易出错,尤其是字段注释完全丢失!
✨ 工具介绍
我最近在 gotool.top 上做了一个非常实用的工具:
✅ SQL → Elasticsearch Mapping 自动转换工具
支持能力:
- 🔥 自动解析 SQL 表结构
- 🔥 智能转换 ES 字段类型
- 🔥 支持嵌套结构(JSON / object)
- 🔥 自动解析字段注释
- 🔥 将注释写入 ES
meta.description
🧠 为什么要支持 meta.description?
在 Elasticsearch 中,mapping 是这样的:
json
{
"properties": {
"user_name": {
"type": "keyword"
}
}
}
👉 问题:
- 完全没有字段说明
- 后期维护困难
- 数据含义只能靠猜 😅
✅ 优化后(支持注释)
json
{
"properties": {
"user_name": {
"type": "keyword",
"meta": {
"description": "用户名"
}
}
}
}
💡 好处:
- 字段含义清晰
- 前端/数据分析人员更容易理解
- 提高团队协作效率
🛠️ SQL 示例
sql
CREATE TABLE if not exists user (
id int NOT NULL AUTO_INCREMENT,
name varchar(10) NOT NULL COMMENT '姓名',
gender tinyint NOT NULL DEFAULT 0 COMMENT '性别 0-未知 1-男 2-女',
age int NOT NULL COMMENT '年龄',
created_date datetime DEFAULT CURRENT_TIMESTAMP,
updated_date datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
⚙️ 自动生成 ES Mapping
json
{
"mappings": {
"properties": {
"id": {
"type": "keyword"
},
"name": {
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
},
"meta": {
"description": "姓名"
},
"type": "text"
},
"gender": {
"meta": {
"description": "性别 0-未知 1-男 2-女"
},
"type": "integer"
},
"age": {
"meta": {
"description": "年龄"
},
"type": "keyword"
},
"created_date": {
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis",
"type": "date"
},
"updated_date": {
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis",
"type": "date"
}
}
}
}
🔥 类型映射规则(核心设计)
| SQL 类型 | ES 类型 |
|---|---|
| BIGINT | long |
| INT | integer |
| VARCHAR | keyword / text |
| TEXT | text |
| DATETIME | date |
| JSON | object |
| BOOLEAN | boolean |
👉 优化点:
VARCHAR默认 →keyword(可配置)- 长文本 →
text DATETIME自动补全 format
🧩 注释解析设计(重点)
SQL 中:
sql
user_name VARCHAR(64) COMMENT '用户名'
👉 自动解析为:
json
"meta": {
"description": "用户名"
}
🎯 使用场景
这个工具非常适合:
- 🔹 MySQL → Elasticsearch 数据同步
- 🔹 日志系统搭建(ELK)
- 🔹 数据分析平台
- 🔹 搜索系统开发
🌍 在线体验
👉 直接使用:
(支持 SQL → ES Mapping 一键转换)
📌 总结
相比传统手写 mapping,这个工具带来的价值:
- 🚀 提升开发效率(节省 90% 时间)
- 🧠 保留字段语义(meta.description)
- 🔒 减少错误率
- 📈 更适合团队协作