Elasticsearch Mapping 一键生成 Proto 文件(支持嵌套 + 注释过滤)

🚀 Elasticsearch Mapping 一键生成 Proto 文件(支持嵌套 + 注释过滤)

📌 前言

在微服务架构中,越来越多团队开始使用:

👉 gRPC + Protocol Buffers(Proto)

但当你在项目中同时使用 Elasticsearch 时,一个非常现实的问题来了:

👉 如何把 ES Mapping 转成 Proto 定义?


😩 常见开发痛点

假设你有一份 Elasticsearch Mapping:

json 复制代码
{
  // 用户订单
  "properties": {
    "order": {
      "properties": {
        "id": { "type": "keyword" },
        "amount": { "type": "double" },
        "items": {
          "type": "nested",
          "properties": {
            "name": { "type": "text" },
            "price": { "type": "double" }
          }
        }
      }
    }
  }
}

你需要手动写 Proto:

proto 复制代码
message Item {
  string name = 1;
  double price = 2;
}

message Order {
  string id = 1;
  double amount = 2;
  repeated Item items = 3;
}

message Document {
  Order order = 1;
}

问题是:

  • ❌ 字段编号要手动维护(很容易乱)
  • ❌ 嵌套结构写起来很复杂
  • ❌ Mapping 有注释,JSON 直接解析失败
  • ❌ 类型转换不统一

🛠 解决方案

我在 gotool.top 上实现了一个工具:

👉 ES Mapping → Proto 自动生成

并支持:

🔥 嵌套结构解析

🔥 repeated 自动处理

🔥 JSON 注释自动过滤


⚡ 核心能力

✅ 1. 自动生成 message

  • 自动生成 Proto message
  • 自动处理嵌套结构
  • 自动拆分子结构

✅ 2. 自动字段编号(重点)

Proto 中:

proto 复制代码
string name = 1;

👉 每个字段必须有编号!

工具自动:

  • 按顺序编号
  • 避免冲突
  • 保证规范

✅ 3. nested → repeated

ES 类型 Proto 类型
nested repeated message
object message

示例:

json 复制代码
"type": "nested"

👉 自动生成:

proto 复制代码
repeated Item items = 3;

✅ 4. 类型自动映射

ES 类型 Proto 类型
keyword / text string
integer int32
long int64
double double
float float
boolean bool
date string(或 int64 时间戳)

✅ 5. 自动过滤 JSON 注释(非常关键)

支持:

json 复制代码
// 单行注释
/* 多行注释 */

👉 直接粘贴 mapping 即可,无需清理!


🔥 一键生成效果

输入 👇

json 复制代码
{
  "properties": {
    "user": {
      "properties": {
        "name": { "type": "keyword" },
        "tags": {
          "type": "nested",
          "properties": {
            "label": { "type": "text" }
          }
        }
      }
    }
  }
}

输出 👇

proto 复制代码
message Tag {
  string label = 1;
}

message User {
  string name = 1;
  repeated Tag tags = 2;
}

message Document {
  User user = 1;
}

类型映射

go 复制代码
var typeMap = map[string]string{
    "keyword": "string",
    "integer": "int32",
    "long":    "int64",
}

💡 使用场景

这个工具非常适合:

  • gRPC 微服务开发
  • Go / Java 服务通信协议定义
  • ES 数据 → RPC 接口
  • 数据中台统一协议建模

🚀 为什么这个工具很有价值?

❌ 传统方式

  • 手写 proto(极易出错)
  • 字段编号难维护
  • 嵌套结构复杂
  • mapping 不规范直接失败

✅ 使用工具

  • 一键生成 ⚡
  • 自动编号 💯
  • 支持复杂结构 🧠
  • 注释自动处理 🔥

🌐 在线体验

👉 gotool.top

搜索:ES Mapping 转 Proto


🏁 总结

一句话总结:

👉 从 ES Mapping 到 Proto,自动生成 + 自动编号 + 自动处理嵌套!

相关推荐
@insist1233 小时前
信息安全工程师考点精讲:身份认证核心原理与分类体系(上篇)
大数据·网络·分类·信息安全工程师·软件水平考试
天辛大师3 小时前
AI助力旅游扩大化,五一旅游公园通游年票普惠研究
大数据·启发式算法·旅游
WordPress学习笔记4 小时前
镌刻中式美学的高端WordPress主题
大数据·人工智能·wordpress
数智化精益手记局5 小时前
拆解物料管理erp系统的核心功能,看物料管理erp系统如何解决库存积压与缺料难题
大数据·网络·人工智能·安全·信息可视化·精益工程
Elastic 中国社区官方博客6 小时前
使用 Observability Migration Platform 将 Datadog 和 Grafana 的仪表板与告警迁移到 Kibana
大数据·elasticsearch·搜索引擎·信息可视化·全文检索·grafana·datalog
jkyy20147 小时前
AI运动数字化:以技术重塑场景,健康有益赋能全域运动健康管理
大数据·人工智能·健康医疗
金融小师妹7 小时前
4月30日多因子共振节点:鲍威尔“收官效应”与权力结构重塑的预期重构
大数据·人工智能·重构·逻辑回归
2601_949925187 小时前
AI Agent如何重构跨境物流的决策?
大数据·人工智能·重构·ai agent·geo优化·物流科技
xiaoduo AI8 小时前
客服机器人问题解决率怎么统计?Agent系统自动判断是否解决,比人工回访准?
大数据·人工智能·机器人
小五兄弟9 小时前
YouTube 肖像检测扩展背后:短剧出海版权保护的技术实现与实战策略
大数据·人工智能