2 回答
TA贡献1887条经验 获得超5个赞
只是为了完整性:当我用“post”而不是“POST”初始化我的请求方法时,我遇到了同样的错误
像这样:
req, _ := http.NewRequest("post", url, query)
// returns: Error 400: ElasticsearchIllegalArgumentException[No feature for name [_bulk]]
req, _ := http.NewRequest("POST", url, query)
// works just fine
TA贡献1815条经验 获得超6个赞
该异常仅在一个地方触发,即在 Get Index API 调用期间。这意味着您的车辆 ID 在此处必须为空:
fetch, err := client.Get().
Index(vehicleIndex).
Type("vehicle").
Id(vehicle.Id). //<-- this
Do()
您正在尝试执行 Get Document API,它遵循GET /{index}/{type}/{id}. 但是,您的客户端不会区分 Get Document 和 Get Index API 调用……并且它不会验证您的参数是否为非空。
因此,如果将 nullvehicle.Id传递给 Get 方法,则您的最终 URL 实际上将是GET /{index}/{type}/
从 Elasticsearch 的角度来看,这不再是一个 Get Document API 调用……它实际上是一个 Get Index 调用,其格式如下: GET /{index}/{feature}. 特征可以是以下之一:_settings,_mappings,_aliases或_warmers。
因为vehicle不是这些特性之一,ES 正在抛出异常并喷涌而出。您可以从控制台验证这一点:
curl -XGET localhost:9200/my_index/vehicle/
- 2 回答
- 0 关注
- 269 浏览
添加回答
举报