我可以在elasticsearch7.5.2中使用elasticsearch-java吗?

cvxl0en2  于 2022-11-22  发布在  ElasticSearch
关注(0)|答案(2)|浏览(226)

我已经尝试了许多版本的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.
z31licg0

z31licg01#

Elastic Java API Client是向前兼容的,而不是向后兼容的。因此,您不能将其用于Elastic 7.5版本。您只能将其用于7.16或更高版本。
Elasticsearch Java high level client您可以与7.5版本一起使用,但现在已弃用。

zzzyeukh

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服务器完全兼容,即使响应头检查通过。

相关问题