【问题标题】:How to disable compatibility header in Elasticsearch Java API Client?如何在 Elasticsearch Java API 客户端中禁用兼容性标头?
【发布时间】:2022-01-17 10:05:52
【问题描述】:

我正在尝试将我的应用程序配置为使用 Java API Client v7.16.3 与 Elastcisearch 服务器 v7.7 交互。但是当我尝试索引新文档时,出现以下错误:

{"error":"Content-Type header [application/vnd.elasticsearch+json; compatible-with=7] is not supported","status":406}

据我了解,原因是compatibility Content-type header 的值包含compatible-with=7。 Elasticsearch v7.7 不支持这种内容类型(而 Elasticsearch v7.15 可以很好地使用它)。这是我的配置:

    fun configElasticsearchRestClient(
        host: String,
        username: String,
        password: String
    ): ElasticsearchClient {
        val elasticsearchRestClient =  RestClient.builder(HttpHost.create(host))
            .build()
        val transport: ElasticsearchTransport = RestClientTransport(
            elasticsearchRestClient,
            JacksonJsonpMapper()
        )
        return ElasticsearchClient(transport)
    }

这里是索引方法:

    fun index(document: SomeDocument) {
        val indexRequest = IndexRequest.Builder<ObjectNode>()
            .index("some-index")
            .document(document)
            .id(document.getId())
            .version(document.getVersion())
            .versionType(External)
            .build()

        elasticsearchClient.index(indexRequest)
    }

是否可以禁用 Java API 客户端的兼容性标头? 或者还有其他方法可以使用 Java API Client for Elasticsearch server v7.7?

【问题讨论】:

    标签: java kotlin elasticsearch elasticsearch-java-api


    【解决方案1】:

    您应该始终使用与服务器版本兼容的客户端库版本。在这种情况下,您使用的是最新版本的客户端库(即 7.16.3)和旧版本的服务器(即 7.7),您不应该这样做,或者您应该 expect some backward incompatibility issues:

    客户端必须与集群中的节点具有相同的主要版本(例如 2.x 或 5.x)。客户端可以连接到具有不同次要版本(例如 2.3.x)的集群,但可能不支持新功能。理想情况下,客户端应该与集群具有相同的版本。

    如果您改用Java client 7.7,则不会有任何问题。

    此外,从最新的Java Client source code 可以看出,compatible-with 值被硬编码到 HTTP 标头值中。如果发现一个 header 没有那个兼容性检查,那就是 modified automatically 包含它,所以没有办法关闭它。

    【讨论】:

    • 感谢您的解释!我了解当我使用客户端 v7.16 和服务器 v7.7 时,我无法使用客户端的所有功能。但是我希望能够使用7.7版本的所有功能,因为服务器和客户端的主要版本是相同的。
    • 是的,除了兼容性检查妨碍了
    猜你喜欢
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    相关资源
    最近更新 更多