news 2026/10/24 2:45:28

curl -X POST “http://localhost:9200/articles/_doc/1“ -H “Content-Type: application/json“ -d ‘{“title

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
curl -X POST “http://localhost:9200/articles/_doc/1“ -H “Content-Type: application/json“ -d ‘{“title

curl -X POST "http://localhost:9200/articles/_doc/1" -H "Content-Type: application/json" -d '{"title": "PHP Guide"}'
是向 Elasticsearch(ES),创建或更新 ID 为1的文档。
理解其每一部分,是
掌握 ES REST API 与数据模型的核心
。


一、HTTP 协议层:RESTful 请求结构

部分说明作用
curl命令行 HTTP 客户端发送请求
-X POSTHTTP 方法创建/更新文档(ES 中 POST/PUT 均可)
http://localhost:9200ES 节点地址默认 HTTP 端口
-H "Content-Type: application/json"请求头告知 ES 负载为 JSON
-d '{"title": "PHP Guide"}'请求体文档数据

🔑核心:ES 完全遵循 RESTful 规范,所有操作 = HTTP 方法 + 路径 + JSON。


二、ES 路径语法:/articles/_doc/1的含义

📂路径分解
段说明规则
articles索引名(Index)类似数据库的“表”
_doc文档类型(Type)ES 7+ 固定为_doc(早期支持自定义)
1文档 ID(Document ID)唯一标识(不指定则 ES 自动生成)
⚠️关键细节
  • 索引(Index):
    • 必须小写(ES 强制);
    • 若不存在,ES 会自动创建(动态映射);
  • 文档 ID:
    • 指定 ID → 幂等操作(重复请求 = 覆盖);
    • 不指定 ID → 用 POST/articles/_doc,ES 生成 UUID;

💡_doc是 ES 7+ 的规范,旧版(6.x)。


三、数据格式:JSON 文档的规则

📜文档结构
{"title":"PHP Guide","content":"Learn Elasticsearch","tags":["php","search"],"published":true,"views":100}
  • 字段类型:ES 自动推断("PHP Guide"→text,100→long);
  • 嵌套对象:支持 JSON 对象/数组;
🚫禁止内容
  • 顶层不能有.或空格("user.name"会被视为嵌套字段);
  • 不能包含控制字符(如\x00);

✅ES 文档 = 无 schema 的 JSON 对象(但可预定义映射)。


4. 幂等性与操作语义

🔁指定 ID 的操作语义
操作首次请求重复请求
PUT /index/_doc/1创建 ID=1 的文档覆盖(更新)
POST /index/_doc/1同 PUT同 PUT

⚠️ES 中 PUT/POST 在指定 ID 时行为一致(官方推荐用 PUT 创建,POST 不指定 ID)。

🌐响应示例
{"_index":"articles","_type":"_doc","_id":"1","_version":1,"result":"created",// 或 "updated""_shards":{"total":2,"successful":1,"failed":0},"_seq_no":0,"_primary_term":1}
  • result:created/updated;
  • _version:乐观锁版本号(用于并发控制);

五、错误处理:常见失败场景

🚨1. 索引名大写
curl-X POST"http://localhost:9200/Articles/_doc/1"-d'{"title":"Test"}'
  • 错误:
    {"error":"invalid_index_name_exception","reason":"Invalid index name [Articles], must be lowercase"}
🚨2. JSON 格式错误
curl-X POST... -d"{'title': 'Test'}"# 单引号非法
  • 错误:
    {"error":"json_parse_exception","reason":"Unexpected character (''': ...)"}
🚨3. 内容类型缺失
curl-X POST... -d'{"title":"Test"}'# 无 -H "Content-Type: application/json"
  • 错误:
    {"error":"parse_exception","reason":"request body is required"}

六、工程实践:PHP 中的安全等效实现

🧪1. 原生 cURL
<?php$url='http://localhost:9200/articles/_doc/1';$data=['title'=>'PHP Guide'];$ch=curl_init($url);curl_setopt_array($ch,[CURLOPT_CUSTOMREQUEST=>'POST',CURLOPT_POSTFIELDS=>json_encode($data),CURLOPT_HTTPHEADER=>['Content-Type: application/json'],CURLOPT_RETURNTRANSFER=>true]);$response=curl_exec($ch);$result=json_decode($response,true);curl_close($ch);if(isset($result['result'])){echo"文档{$result['result']},ID:{$result['_id']}\n";}
🧪2. 使用官方客户端
<?php$client=ClientBuilder::create()->build();$response=$client->index(['index'=>'articles','id'=>1,'body'=>['title'=>'PHP Guide']]);echo"结果: ".$response['result'];

七、终极心法:ES 是 JSON over HTTP

不要被路径语法迷惑,
而要理解“索引=数据库,文档=行,字段=列”
。

  • 脆弱操作:
    • 手写 cURL 无错误处理 → 静默失败;
  • 韧性操作:
    • 用官方客户端 + 检查响应;
  • 结果:
    • 前者是脚本,后者是工程。

真正的 ES 能力,
不在“命令多熟”,
而在“协议多透”
。


八、行动建议:今日 ES 写入验证

## 2025-10-07 ES 写入验证 ### 1. 手动执行 curl - [ ] 验证成功响应(result: created) ### 2. 故意触发错误 - [ ] 大写索引名 → 观察错误 - [ ] 单引号 JSON → 观察错误 ### 3. PHP 实现 - [ ] 用 cURL 和官方客户端各实现一次 ### 4. 检查响应 - [ ] 验证 _version 和 result 字段

✅完成即掌握 ES 写入核心机制。

当你停止复制 curl 命令,
开始理解 HTTP + JSON + 路径语义,
Elasticsearch 就从工具,
变为数据管道基石
。

这,才是专业工程师的搜索观。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/23 5:12:20

【MCP Azure容器部署实战指南】:掌握高效部署的5大核心技巧

第一章&#xff1a;MCP Azure容器部署概述在现代云原生架构中&#xff0c;MCP&#xff08;Managed Cloud Platform&#xff09;与 Azure 容器服务的集成提供了高效、可扩展的应用部署方案。通过将容器化工作负载部署到 Azure Kubernetes Service&#xff08;AKS&#xff09;&am…

作者头像 李华
网站建设 2026/10/23 5:11:08

医疗领域跨语言沟通新方案:Hunyuan-MT-7B应用场景探索

医疗领域跨语言沟通新方案&#xff1a;Hunyuan-MT-7B应用场景探索 在边疆地区的基层医院&#xff0c;一位只会说维吾尔语的老年患者因胸痛前来就诊。他努力用手势和零散的汉语词汇描述症状&#xff0c;医生则反复追问、猜测&#xff0c;整个问诊过程耗时近半小时&#xff0c;仍…

作者头像 李华
网站建设 2026/10/23 5:23:33

采集室内空气质量数据。(甲醛,pm2.5)超标时,自动启动空气净化器,净化达标后自动关闭。

智能室内空气质量监控与净化系统一、实际应用场景描述场景背景在现代煤矿智能化开采的办公环境中&#xff0c;由于煤矿设备维护区域、实验室、会议室等封闭空间可能存在甲醛&#xff08;来自新设备、装修材料&#xff09;和PM2.5&#xff08;来自外部空气、设备运行&#xff09…

作者头像 李华
网站建设 2026/10/23 17:34:04

Agentic RAG 实战:用 LangGraph 构建可自我修正的 RAG 系统

标准 RAG 流水线有个根本性的毛病&#xff1a;检索到的文档一旦与用户意图对不上号&#xff0c;模型照样能面不改色地输出一堆看似合理的胡话&#xff0c;既没有反馈机制也谈不上什么纠错能力。 而Agentic RAG 的思路截然不同&#xff0c;它不急着从检索结果里硬挤答案&#xf…

作者头像 李华
网站建设 2026/10/23 5:12:21

非理想检测分布式雷达拓扑资源优化【附代码】

✅ 博主简介&#xff1a;擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导&#xff0c;毕业论文、期刊论文经验交流。✅成品或者定制&#xff0c;扫描文章底部微信二维码。(1) 不确定量测下的GDOP修正与定位拓扑优化 分布式雷达系统通过组网技术协同感知空间…

作者头像 李华