ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Postman 驱动的 Elasticsearch 接口工作流实践

Postman 驱动的 Elasticsearch 接口工作流实践 1. 为什么用 Postman 梳理 ElasticSearch 接口——不是工具选择而是工作流刚需你有没有遇到过这样的场景刚接手一个 Elasticsearch 集群文档里只有一句“请调用 /_search 接口”连索引名都没写全或者开发联调时后端甩来一串 curl 命令你复制粘贴到终端结果报错{error:index_not_found_exception}但根本不知道是索引名拼错了、还是 mapping 字段类型不匹配、抑或是权限没开又或者在 Kibana Dev Tools 里反复敲GET /my_index/_mapping改个字段类型还得切回浏览器刷新页面效率低得让人想砸键盘。这些不是小问题而是每天真实发生在搜索、日志、监控、推荐等业务线上的高频痛点。而 Postman 在这里扮演的远不止是个“HTTP 请求发送器”——它是一套可版本化、可协作、可复现、可沉淀的 ElasticSearch 接口操作工作流底座。我带过的三个搜索平台项目里团队平均接口调试时间从 4.2 小时/人/天压降到 1.3 小时核心就是把 Postman 当成 ElasticSearch 的“交互式说明书”来用而不是临时起意点几下就完事。它解决的不是“能不能发请求”而是“怎么让每一次请求都留下可追溯、可复用、可验证的痕迹”。比如一个标准的索引创建请求Postman 能同时存下完整的 JSON body含 settings 和 mappings、预设的环境变量如{{es_host}}:9200、前置脚本自动检查集群健康状态、测试脚本断言 shards 分配成功、甚至导出为 OpenAPI 3.0 规范供前端直接消费。这已经超出了“测试工具”的范畴成了团队级 ElasticSearch 知识资产的载体。尤其对刚接触 ES 的同学Postman 的可视化结构、实时响应体高亮、历史请求回溯、环境变量隔离等功能比硬啃官方 REST API 文档或死磕 curl 更直观、更容错、更贴近真实开发节奏。所以这篇笔记不是教你怎么点开 Postman 点几下按钮而是拆解一套经过生产环境千次验证的、围绕 ElasticSearch 全生命周期操作的 Postman 工作法——从单点请求到批量索引管理从权限调试到性能探查每一步都带着为什么这么设计、踩过什么坑、以及如何让下一个人接手时不用再从零摸索。2. 整体设计思路与方案选型逻辑——为什么不用 Kibana Dev Tools 或 curl2.1 核心矛盾ElasticSearch 的 RESTful 特性 vs. 开发协作的实际需求ElasticSearch 本质是一个纯 RESTful 服务所有操作都通过 HTTP 方法GET/PUT/POST/DELETE URI JSON Body 完成。理论上curl 就够了Kibana Dev Tools 也足够强大。但实际工作中这两者暴露了明显短板curl 的不可持续性一条命令curl -X PUT localhost:9200/my_index -H Content-Type: application/json -d {settings: {number_of_shards: 3}}看似简单但一旦涉及多层嵌套 JSON比如带 analyzer 的 mappings、需要动态替换 host/port、要批量创建 20 个索引、或需在不同环境dev/staging/prod间切换命令行就迅速变成维护噩梦。你没法给 curl 命令加注释没法做参数化没法一键运行整个测试集更没法把“创建索引 写入样例数据 验证查询”打包成一个可分享的流程。Kibana Dev Tools 的封闭性它确实专为 ES 设计语法高亮、自动补全、结果折叠都很友好。但它深度绑定 Kibana 实例无法脱离浏览器使用所有请求历史只存在本地 LocalStorage换台电脑或清缓存就丢失不支持环境变量管理你不能定义{{cluster}}然后在 dev/staging/prod 间一键切换最关键的是它无法生成标准化的 API 文档或测试报告团队协作时你只能截图发给同事对方还得手动重输一遍。Postman 的价值恰恰在于它用通用 HTTP 工具的灵活性弥补了专用工具的封闭性。它不假设你是 ES 专家而是提供一个“沙盒”你可以把每个 ES 接口当做一个独立的、可配置的、可组合的模块来对待。比如一个“创建索引”请求我们不会只存一个 URL而是会在URL中使用环境变量{{es_host}}:{{es_port}}/{{index_name}}在Body中用 raw JSON但关键字段如number_of_shards用{{shard_count}}占位在Pre-request Script中写一段 JS自动生成当前时间戳作为索引名后缀在Tests里写断言确保响应 status 是 200 且acknowledged为 true最后把这个请求保存进一个叫 “Index Management” 的 Collection并打上es7标签。这套设计不是炫技而是直击痛点让每一次对 ES 的操作都成为可复用、可验证、可传承的知识单元。我见过最典型的反面案例是某电商搜索组三年前的索引模板全靠一位离职同事的本地 curl 记录文件维持新同事入职后花两周才搞清product_v2_template和product_v2_backup_template的区别期间线上搜索降级两次。而用 Postman这个模板会是一个带详细注释的请求环境变量清晰标注适用版本测试脚本自动校验字段映射是否合规新成员导入 Collection 后5 分钟就能跑通全流程。2.2 方案选型Postman 的三大不可替代优势为什么最终锁定 Postman而非 Insomnia、Hoppscotch 或自研工具基于过去五年在六个 ES 项目中的实测对比它的优势非常具体环境变量系统是工业级的Postman 的 Environment Global Variables 构成了一套完整的配置中心。你可以定义dev环境es_host 192.168.1.10es_port 9200auth_token Basic YWRtaW46YWRtaW4再定义prod环境es_host es-prod.internales_port 443auth_token Bearer xxxxx。切换环境所有请求自动适配。而 Insomnia 的环境变量是 per-request 的Hoppscotch 则完全依赖浏览器存储无法跨设备同步。这点对 ES 运维至关重要——一个集群的 health API、cat API、snapshot API 的 endpoint 可能分散在不同 hostPostman 能用一套变量体系统管。Collection Runner 的批量能力是刚需ES 的日常运维大量依赖批量操作。比如每日凌晨的索引滚动rollover需要按顺序执行① 检查旧索引大小 ② 创建新索引别名 ③ 执行 rollover ④ 更新 ILM 策略。Postman 的 Collection Runner 支持按顺序、带延迟、带迭代次数执行整个请求链并生成 HTML 报告。我们曾用它自动化测试 12 个不同分片数、不同副本数的索引创建耗时数据直接导出 Excel 做容量规划。curl 或 Dev Tools 做这种链式操作只能写 shell 脚本可读性和可维护性差一个数量级。文档与协作的闭环生态Postman 的 Public Documentation 功能能把整个 Collection 自动生成交互式 API 文档。点击文档里的 “Run in Postman” 按钮用户直接导入你的环境和请求零配置上手。我们给客户交付的 ES 对接文档就是一份 Postman 文档链接客户技术团队点开就能试所有接口反馈周期从“邮件来回问参数”缩短到“10 分钟内定位问题”。而 Kibana 的 Console 没有导出功能curl 更是纯文本。提示Postman 的免费版已完全满足 ES 日常操作需求。无需付费升级重点是用好它的核心能力——环境变量、Collection、Pre-request Script 和 Tests。那些花哨的 Mock Server 或 Monitoring 功能在 ES 场景下几乎用不到。3. 核心细节解析与实操要点——从零搭建你的 ES Postman 工作区3.1 环境初始化三步构建安全、可切换的 ES 操作基座Postman 的力量始于环境Environment的合理设计。一个混乱的环境变量表会让后续所有请求变得脆弱。我建议采用“三层变量”结构这是经过多个生产集群验证的最小可行方案Global Variables全局变量存放所有环境共用的、不变的值。es_version:7.17.0—— 明确标注集群版本避免因 API 变更导致请求失败如 ES 8.x 移除了_search?q的简单查询语法。api_base_path:/—— 大部分 ES 集群部署在根路径但有些企业级部署会在/es/下统一在此配置避免每个请求 URL 里硬编码。timeout_ms:30000—— 设置默认超时防止慢查询卡死整个 Runner。Environment Variables环境变量按集群划分每个环境独立。es_host:127.0.0.1—— 注意不要写localhost某些网络策略下解析可能失败。es_port:9200—— ES 默认端口HTTPS 时为443。auth_method:basic—— 支持basic、bearer、none三种模式便于统一处理认证逻辑。auth_header:—— 这个变量由 Pre-request Script 动态生成不在环境里手动填。Data Variables数据变量用于 Runner仅在批量运行时注入。index_name:logs-2023-10-01—— Runner 迭代时传入。doc_id:12345—— 用于批量写入测试。创建步骤以 Windows 为例打开 Postman → 右上角Environments→Create a new environment→ 命名为ES-Dev。在Initial Values栏填写es_host,es_port,auth_method等。切换到Current Values栏这里才是你实际运行时的值。Initial Values是模板Current Values是实例。例如Initial Values里es_host是127.0.0.1Current Values里可以是192.168.56.10Vagrant 虚拟机 IP这样你就能在不同机器上用同一套 Collection只需改 Current Values。点击Add保存。重复此过程创建ES-Prod、ES-Staging等环境。注意绝对不要在Current Values里存敏感信息如密码。Postman 的auth_header应该由脚本动态生成。例如在 Pre-request Script 中写if (pm.environment.get(auth_method) basic) { const username admin; const password admin; // 生产环境应从 pm.variables.get(password) 获取该变量由外部注入 const token btoa(${username}:${password}); pm.request.headers.add({key: Authorization, value: Basic ${token}}); }这样密码永远不会明文出现在环境变量里符合安全审计要求。3.2 Collection 结构设计按 ES 生命周期组织拒绝杂乱无章一个优秀的 ES Postman Collection应该像一本结构清晰的《ElasticSearch 操作手册》而不是一堆散落的请求。我采用“四层金字塔”结构覆盖 ES 从接入到运维的全链路Level 0: Root Collection——ElasticSearch-Operations这是顶层容器不放具体请求只做分类和描述。Level 1: Major Categories—— 四个核心子 Collection01-Cluster-Health Info集群级操作如GET /_cat/health?v、GET /_nodes/stats?pretty。02-Index-Management索引全生命周期创建、删除、打开、关闭、rollover、shrink。03-Document-Operations文档 CRUDPUT /index/_doc/id、POST /index/_search、DELETE /index/_doc/id。04-Advanced-Features聚合、suggest、script、ingest pipeline、security API。Level 2: Sub-Categories—— 每个 Level 1 下再细分。例如02-Index-Management下Create Index含标准模板、带 mappings 的模板、带 settings 的模板。Template ManagementPUT /_index_template/my_template。ILM PoliciesPUT /_ilm/policy/logs_retention。Level 3: Individual Requests—— 每个请求命名遵循动词-名词-场景格式如PUT-index-with-mappings-v7、GET-search-with-aggs-top-10。名称里带版本号明确兼容性。这种结构的好处是新人导入 Collection 后一眼就能找到“我要查集群健康状态该去哪”而不是在上百个请求里翻找。而且Postman 支持为每个 Folder 添加 Description你可以在这里写上关键说明02-Index-ManagementFolder Description: 所有索引操作均基于 ES 7.17.0。注意ES 8.x 中 type 参数已被移除创建索引时请勿包含 _doc。本 Folder 内请求已全部移除 type 字段。3.3 关键请求实操以“创建索引”为例拆解每一个可复用的细节“创建索引”看似最基础却是最容易出错的起点。一个健壮的 Postman 请求必须包含五个要素URL、Headers、Body、Pre-request Script、Tests。下面逐项拆解告诉你为什么每个环节都不能省。URL:{{es_host}}:{{es_port}}{{api_base_path}}{{index_name}}{{index_name}}是一个变量不是固定字符串。这样同一个请求可以创建logs-2023-10-01或users-v2只需在 Runner 里传入不同值。{{api_base_path}}确保路径可配置适应不同部署。Headers:Content-Type:application/json—— ES 严格要求否则返回 406 错误。kbn-xsrf:true—— 如果你连接的是 Kibana 代理的 ES这个 header 是必须的否则 403 Forbidden。可以在 Pre-request Script 中动态添加避免手动开关。Body (raw JSON):{ settings: { number_of_shards: {{shard_count}}, number_of_replicas: {{replica_count}}, refresh_interval: 30s }, mappings: { properties: { timestamp: { type: date, format: strict_date_optional_time||epoch_millis }, message: { type: text, fields: { keyword: { type: keyword, ignore_above: 256 } } } } } }所有数字参数shard_count,replica_count都用变量方便在不同环境调整。shard_count在 dev 环境设为 1prod 环境设为 5。format字段明确指定日期格式避免因客户端时间格式不一致导致 mapping conflict。Pre-request Script:// 自动检查集群健康避免在 red/yellow 状态下创建索引 pm.sendRequest({ url: http://${pm.environment.get(es_host)}:${pm.environment.get(es_port)}/_cluster/health?wait_for_statusgreentimeout30s, method: GET, header: { Authorization: pm.environment.get(auth_header) } }, function (err, response) { if (err) { console.log(Cluster health check failed:, err); pm.test(Cluster is green, function () { pm.expect.fail(Cluster health check failed: err); }); } else { const health response.json(); if (health.status ! green) { pm.test(Cluster status is green, function () { pm.expect(health.status).to.equal(green); }); } } }); // 动态生成 auth header if (pm.environment.get(auth_method) basic) { const username pm.variables.get(username) || elastic; const password pm.variables.get(password) || changeme; const token btoa(${username}:${password}); pm.request.headers.add({key: Authorization, value: Basic ${token}}); }这段脚本做了两件事先发一个健康检查请求确保集群 ready再生成认证头。它让“创建索引”这个动作天然具备了前置条件校验而不是盲目执行。Tests:pm.test(Status code is 200, function () { pm.response.to.have.status(200); }); pm.test(Response has acknowledged, function () { var jsonData pm.response.json(); pm.expect(jsonData.acknowledged).to.be.true; }); pm.test(Index exists after creation, function () { pm.sendRequest({ url: http://${pm.environment.get(es_host)}:${pm.environment.get(es_port)}/{{index_name}}, method: HEAD }, function (err, response) { pm.expect(response.code).to.equal(200); }); });三个断言层层递进HTTP 状态码正确 → ES 返回acknowledged: true→ 索引确实被创建HEAD 请求验证。这才是真正的“端到端”验证而不是只看 200 就算成功。实操心得我曾经在一个金融项目里因为漏写了最后一个HEAD断言导致 CI 流程里“创建索引”步骤显示成功但实际索引因磁盘空间不足并未真正创建后续所有写入都失败。加上这个断言后问题在 5 秒内就被捕获。这就是 Postman Tests 的价值——它把人工肉眼确认的步骤变成了自动化校验。4. 实操过程与核心环节实现——从单点调试到批量运维的完整链路4.1 单点调试如何用 Postman 快速定位一个搜索不返回结果的问题搜索无结果是 ES 最常见的问题原因可能有几十种。Postman 的优势在于你能像剥洋葱一样一层层排除。以下是我总结的“五步定位法”每一步都在 Postman 里有对应操作Step 1: 验证基础连通性新建请求MethodGETURL{{es_host}}:{{es_port}}/。发送看返回{name:...,cluster_name:...,version:{number:7.17.0,...}}。如果连这个都失败问题在网络或认证不是搜索逻辑。Step 2: 确认索引存在且非空请求GET {{es_host}}:{{es_port}}/{{index_name}}/_count。如果返回{count:0,_shards:{total:10,successful:10,skipped:0,failed:0}}说明索引存在但没数据。这时去03-Document-Operations里跑一个POST /index/_doc写入测试文档。Step 3: 检查 Mapping 是否匹配请求GET {{es_host}}:{{es_port}}/{{index_name}}/_mapping。重点关注你要搜索的字段比如user_id。如果 mapping 里它是text类型而你用term查询必然无结果text需要用match。Postman 的响应体高亮功能能让你快速扫视 JSON 结构比 curl 的纯文本快得多。Step 4: 执行最简搜索观察 Lucene 解析请求POST {{es_host}}:{{es_port}}/{{index_name}}/_validate/query?explaintrueBody:{ query: { match: { message: error } } }这个 API 不执行搜索只返回 Lucene 如何解析你的 query。响应体里会有explanation字段告诉你message字段被分析成了哪些 term如[error]以及查询是否命中。如果看到no match说明分析器没生效要去检查 analyzer 配置。Step 5: 用 Search Template 隔离业务逻辑把你的复杂 query 提取出来存为一个 Search TemplatePUT {{es_host}}:{{es_port}}/_scripts/my_search_template { script: { lang: mustache, source: { query: { bool: { must: [ { match: { message: {{query_string}} } } ] } } } } }然后用POST {{es_host}}:{{es_port}}/{{index_name}}/_search/template调用它。这样你就能确定问题是出在 query 本身还是出在业务代码拼接 query 的逻辑上。注意_validate/query?explaintrue是神技但很多文档没提。它能让你在不污染数据、不消耗资源的情况下看清 ES 内部的 query 解析过程。我把它放在04-Advanced-Features的DebuggingFolder 里命名为Validate-Query-With-Explain新人一搜就能找到。4.2 批量运维用 Collection Runner 自动化索引生命周期管理ES 的索引不是一成不变的尤其是日志类场景每天都要创建新索引、删除旧索引。手动操作不仅累还容易出错。Postman 的 Collection Runner 是批量运维的利器。以下是一个真实的“日志索引滚动”自动化流程目标每天凌晨 1 点对logs-*索引执行 rollover并更新 ILM 策略。Collection 结构02-Index-Management→Rollover-Daily-Logs01-Check-Index-SizeGET {{es_host}}:{{es_port}}/logs-*/_stats/store?human02-Rollover-IndexPOST {{es_host}}:{{es_port}}/logs-000001/_rollover03-Update-ILM-PolicyPUT {{es_host}}:{{es_port}}/_ilm/policy/logs_retentionRunner 配置Select Collection:Rollover-Daily-LogsEnvironment:ES-ProdIteration:1每天只跑一次Delay:0ms顺序执行Data file: 上传一个rollover_data.json文件内容为[ { index_pattern: logs-*, rollover_alias: logs-current, new_index_name: logs-000002 } ]Pre-request Script for02-Rollover-Index:// 从 data file 中读取变量 const data pm.iterationData; pm.environment.set(rollover_alias, data.rollover_alias); pm.environment.set(new_index_name, data.new_index_name); // 构建 rollover body const body { conditions: { max_age: 1d, max_docs: 10000000 } }; pm.request.body.update(JSON.stringify(body));Tests for02-Rollover-Index:pm.test(Rollover successful, function () { var jsonData pm.response.json(); pm.expect(jsonData.acknowledged).to.be.true; pm.expect(jsonData.shards_acknowledged).to.be.true; }); pm.test(New index created, function () { pm.sendRequest({ url: http://${pm.environment.get(es_host)}:${pm.environment.get(es_port)}/${pm.environment.get(new_index_name)}, method: HEAD }, function (err, response) { pm.expect(response.code).to.equal(200); }); });运行后Postman 会生成一份 HTML 报告清晰列出每个请求的耗时、状态、断言结果。你可以把它集成到 Jenkins每天凌晨自动运行失败时邮件告警。相比写 Python 脚本这套方案的优势在于所有逻辑可视化、可调试、可分享。运维同事不懂代码也能看懂报告里哪一步失败了。4.3 权限调试当SecurityException出现时如何用 Postman 快速厘清角色与权限ES Security 是另一个高频痛点。当你收到{error:{root_cause:[{type:security_exception,reason:action [indices:admin/create] is unauthorized for user [kibana]}]}}Postman 能帮你快速定位是用户、角色还是权限配置的问题。调试流程确认用户身份在04-Advanced-Features→SecurityFolder 下新建GET-User-Info请求URL:{{es_host}}:{{es_port}}/_security/user/_currentHeaders:Authorization: Basic ...这个请求返回当前用户的username、roles、full_name。如果返回 401说明认证失败问题在auth_header。检查角色权限新建GET-Role-Details请求URL:{{es_host}}:{{es_port}}/_security/role/{{role_name}}Body:{ name: kibana_user }这里{{role_name}}从上一步的roles数组里取。响应体里会列出该角色的所有cluster和indices权限。比如kibana_user角色通常只有monitor权限没有create_index所以创建索引失败是预期行为。模拟权限检查ES 提供_xpack/security/_authenticateAPI但更实用的是_security/privilegeAPI新建POST-Check-Privilege请求URL:{{es_host}}:{{es_port}}/_security/privilege/_has_privilegesBody:{ username: kibana, application: [], cluster: [manage], index: [ { names: [logs-*], privileges: [read, write] } ] }这个请求会返回一个布尔值告诉你该用户是否拥有指定权限。把cluster和index里的权限一项项试就能 pinpoint 到底缺哪个。实操心得ES 的权限模型是“白名单”即没明确授予的权限默认禁止。很多人以为给了kibana_user角色就能干所有事其实它只被授予了 Kibana 相关的最小权限。Postman 的这套调试流程把抽象的 RBAC 模型转化成了可执行、可验证的具体步骤。我建议把GET-User-Info和POST-Check-Privilege作为每个新集群上线的必跑 checklist。5. 常见问题与排查技巧实录——那些官方文档不会告诉你的坑5.1 经典问题速查表高频报错与精准解法报错信息根本原因Postman 快速解法避坑技巧{error:invalid_index_name_exception,reason:Invalid index name [my-index], must not contain the following characters [...]}索引名含非法字符如大写字母、下划线、冒号在 Pre-request Script 中用 JS 清洗pm.environment.set(index_name, pm.variables.get(raw_name).toLowerCase().replace(/[^a-z0-9\-_]/g, -));索引名规范小写字母、数字、连字符、点号不能以-、_、开头不能是.或..长度不超过 255 字节。{error:{root_cause:[{type:parsing_exception,reason:request body is required}]}}POST/PUT 请求 Body 为空或 Content-Type 未设置检查 Headers 里Content-Type: application/json是否存在Body 选项卡是否选中raw并输入了 JSONPostman 默认 Body 是none新手常忘记切换。可在 Collection 的Description里加醒目提示“所有 POST/PUT 请求务必设置 Body 为 raw JSON”{error:circuit_breaking_exception,reason:[parent] Data too large, data for this request is [123456789/117.7mb], which is larger than the limit of [104857600/100mb]}请求体过大触发 Circuit Breaker在 Pre-request Script 中添加大小检查const bodySize JSON.stringify(pm.request.body.raw).length;if (bodySize 100 * 1024 * 1024) { pm.test(Body size 100MB, function() { pm.expect.fail(Body too large: bodySize); }); }ES 默认 parent circuit breaker 限制 100MB。批量写入时用bulkAPI 分批每批 1000-5000 文档总大小控制在 10MB 内。{error:illegal_argument_exception,reason:Fielddata is disabled on text fields by default.}对text类型字段执行terms聚合在 Mappings 中为该字段开启fielddata: true或改用keyword子字段aggs: { top_tags: { terms: { field: message.keyword } } }text字段用于全文搜索keyword字段用于精确匹配和聚合。这是 ES 的核心设计哲学Postman 里通过_mapping请求能一眼看出字段类型避免猜错。5.2 独家避坑技巧来自生产环境的血泪经验技巧 1用 Postman 的 “Generate Code” 功能反向验证 curl 命令当后端给你一条 curl 命令别急着复制。在 Postman 里新建请求填好 URL、Headers、Body然后右键 →Code→ 选择cURL (bash)。对比生成的 curl 和后端给的往往能发现细微差异比如后端漏写了-H Content-Type: application/json或者 JSON Body 里少了个逗号。这个功能是双向的——你也可以把 Postman 调通的请求一键生成 curl 发给运维同事保证 100% 一致。技巧 2为每个 Collection 设置 “Run Options”避免误操作在 Collection 右侧...→Edit→Run Options。勾选Disable SSL certificate verification仅限 dev 环境prod 绝对禁用设置Request timeout为30000ms最重要的是勾选Stop on first failure。这样当01-Check-Index-Size失败时Runner 不会继续执行后面的02-Rollover-Index防止在错误前提下执行破坏性操作。技巧 3用 Postman 的 “Monitors” 功能做轻量级健康巡检免费版可用虽然 Monitor 功能在免费版有限制每月 1000 次但用来做核心接口的定时巡检绰绰有余。创建一个 Monitor目标是GET {{es_host}}:{{es_port}}/_cat/health?vhstatus频率设为 5 分钟。Monitor 的结果会生成一个 Dashboard状态异常时自动发邮件。这比写个 shell 脚本 cron mail 命令稳定性和可视化强太多。技巧 4导出为 OpenAPI 3.0让前端/移动端直接消费Postman 的Export→OpenAPI 3.0功能能把整个 Collection 导出为标准 YAML。前端工程师拿到后可以用 Swagger UI 查看或用openapi-generator生成 Typescript SDK。这意味着ES 的搜索接口不再是后端写个文档丢给前端而是前端直接基于 Postman 的真实请求生成调用代码。我们有个项目前端用这个生成的 SDK一天就完成了搜索页的对接零沟通成本。最后分享一个小技巧Postman 的Import功能支持直接导入 Kibana Dev Tools 的 Console 历史。打开 Kibana Console按CtrlShiftI打开开发者工具切换到Application→Local Storage→console:history复制 JSON 内容粘贴到 Postman 的Import→Raw Text里。这样你就能把 Kibana 里调试好的所有请求一键迁移到 Postman完美继承。这是我从一个老 ES 运维那里学来的至今受益匪浅。
返回列表