我已经尝试了许多版本的elasticsearch-java,但没有一个可以工作。
所以,我的elasticsearch版本是7.5.2,错误响应如下:
org.elasticsearch.client.ResponseException: method [POST], host [***:80], URI [/location/_search?typed_keys=true], status line [HTTP/1.1 406 Not Acceptable]
{"error":"Content-Type header [application/vnd.elasticsearch+json; compatible-with=7] is not supported","status":406}
当我试图设置这样的默认标题时:
setDefaultHeaders(new Header[]{
new BasicHeader("Content-type", "application/json")
})
错误响应更改为:
co.elastic.clients.transport.TransportException: [es/search] Missing [X-Elastic-Product] header. Please check that you are connecting to an Elasticsearch instance, and that any networking filters are preserving that header.
2条答案
按热度按时间z31licg01#
Elastic Java API Client是向前兼容的,而不是向后兼容的。因此,您不能将其用于Elastic 7.5版本。您只能将其用于7.16或更高版本。
Elasticsearch Java high level client您可以与7.5版本一起使用,但现在已弃用。
zzzyeukh2#
如果您更喜欢
elasticsearch-java
客户端而不是高级的rest客户端,您仍然可以使用elasticsearch-java
客户端,后者已经被弃用。你所要做的就是为低版本的elasticsearch服务器(如this)的所有响应添加默认的
X-Elastic-Product: Elasticsearch
头。对于
Content-type: application/json
请求报头,它可以是可选的(例如:不需要为7.12.x elasticsearch的请求添加这个头)。2但是,在您的情况(7.5.2)中,这个头应该存在。注意:请记住,elasticsearch-java客户端可能无法与低版本的elasticsearch服务器完全兼容,即使响应头检查通过。