Elasticsearch PUT新增文档报no handler found错误解决
Elasticsearch 8.x新增文档报错排查与解决
从返回的索引版本号8030299可确认当前运行的是Elasticsearch 8.3.2版本,no handler found for uri报错是请求不符合8.x版本接口规则导致,和megacorp索引创建状态无关,按以下点逐一修正即可:
- 修正请求路径错误
原路径存在两个问题:一是empoyee为拼写错误,正确应为employee;二是Elasticsearch 8.x已完全移除7.x及更早版本中的映射类型(mapping type)概念,不再支持/{索引名}/{类型名}/{文档ID}的三段式写入路径。
指定文档ID写入的正确路径为:PUT http://localhost:9200/megacorp/_doc/1;如果不需要自定义文档ID,可使用POST http://localhost:9200/megacorp/_doc由ES自动生成文档ID。 - 修正请求体格式错误
原请求体缺少最外层的JSON大括号包裹,不是合法JSON格式,正确请求体内容如下:{ "first_name": "John", "last_name": "Smith", "age": 25, "about": "I love to go rock climbing", "interests": ["sports", "music"] } - 补全必要请求头
发送写入请求时必须携带Content-Type: application/json请求头,8.x版本默认会拦截未声明JSON格式的写入请求,部分轻量HTTP客户端不会自动添加该头,需要手动配置。
修正后验证标准:
执行PUT请求到http://localhost:9200/megacorp/_doc/1,携带上述JSON请求体与正确Content-Type头,返回结果中result字段值为created即代表文档写入成功。
内容的提问来源于stack exchange,提问作者Димитър Димитров
相关产品推荐
相关产品推荐

