如何向云原生ElasticSearch索引添加文档?API访问遇404问题
问题解答
1. 索引相关端点报错的原因及解决方法
你混淆了Elastic Cloud的两类API:
- Cloud Control Plane API:这是用来管理部署的API,域名是
api.elastic-cloud.com,路径以/api/v1/开头(比如你能正常访问的/deployments),它负责创建/删除部署、调整资源等操作,不直接操作Elasticsearch的索引数据。 - Elasticsearch自身REST API:每个ES部署都有自己独立的访问域名(不是
api.elastic-cloud.com),你需要从Elastic Cloud控制台找到你部署的ES实例的专属端点(格式类似https://<部署ID>.<区域>.elastic-cloud.com),然后在这个域名后拼接ES的标准API路径,比如:- 查看所有索引:
GET /_cat/indices?v - 查看product索引:
GET /product
- 查看所有索引:
你之前的请求都是把ES的API路径加到了Cloud Control Plane的域名后,自然会返回资源不存在的错误。
2. 向云原生Elasticsearch索引添加文档的方法
方法一:用curl命令发送请求
- 从Elastic Cloud控制台获取你的ES部署端点、用户名(默认是
elastic)和对应密码,或者生成API密钥。 - 执行类似以下的命令添加文档:
curl -X POST "https://<你的ES端点>/product/_doc/1" \ -u "elastic:<你的密码>" \ -H "Content-Type: application/json" \ -d '{"name": "示例产品", "price": 99, "stock": 100}'
- 如果你用API密钥,把
-u参数换成-H "Authorization: ApiKey <你的API密钥>" _doc/1里的1是文档ID,也可以省略,ES会自动生成ID
方法二:用Kibana控制台操作
既然你已经能在控制台正常访问,直接打开Kibana的Dev Tools,输入以下命令执行即可:
POST /product/_doc/2 { "name": "另一款产品", "price": 199, "stock": 50 }
内容的提问来源于stack exchange,提问作者O'Leg
相关产品推荐
相关产品推荐

