安装编辑

要求

  • Java 8 或更高版本。
  • 一个 JSON 对象映射库,以允许您的应用程序类与 Elasticsearch API 无缝集成。Java 客户端支持 JacksonJSON-B 库,例如 Eclipse Yasson

版本托管在 Maven 中央仓库。如果您正在寻找 SNAPSHOT 版本,Elastic Maven 快照仓库位于 https://snapshots.elastic.co/maven/

在 Gradle 项目中使用 Jackson 进行安装编辑

dependencies {
    implementation 'co.elastic.clients:elasticsearch-java:8.14.2'
    implementation 'com.fasterxml.jackson.core:jackson-databind:2.17.0'
}

在 Maven 项目中使用 Jackson 进行安装编辑

在项目的 pom.xml 中,添加以下仓库定义和依赖项

<project>
  <dependencies>

    <dependency>
      <groupId>co.elastic.clients</groupId>
      <artifactId>elasticsearch-java</artifactId>
      <version>8.14.2</version>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.17.0</version>
    </dependency>

  </dependencies>
</project>

如果出现 ClassNotFoundException: jakarta.json.spi.JsonProvider 错误编辑

在设置依赖项后,您的应用程序可能会出现 ClassNotFoundException: jakarta.json.spi.JsonProvider 错误。

如果发生这种情况,您必须显式添加 jakarta.json:jakarta.json-api:2.0.1 依赖项。

Gradle

dependencies {
    ...
    implementation 'jakarta.json:jakarta.json-api:2.0.1'
}

Maven

<project>
  <dependencies>
    ...
    <dependency>
      <groupId>jakarta.json</groupId>
      <artifactId>jakarta.json-api</artifactId>
      <version>2.0.1</version>
    </dependency>

  </dependencies>
</project>

为什么需要这样做?

一些框架(如 Spring Boot 或 Helidon)附带了 Gradle 和 Maven 插件或 Maven BOM 文件,以简化开发和依赖项管理。这些插件和 BOM 定义了许多知名库要使用的版本。

其中一个库是 jakarta.json:json-api,它定义了标准的 Java JSON API。在 1.x 版本中,此库使用 javax.json 包,而在 2.x 版本中,它在 从 JavaEE 迁移到 JakartaEE 后使用 jakarta.json 包。

Java API 客户端依赖于此库的 2.0.1 版本,以便使用更新的、面向未来的 jakarta.json 包。但是,一些构建插件和 BOM 会覆盖 Java API 客户端的依赖项,以在较旧的 javax.json 命名空间中使用 1.x 版本,从而导致 ClassNotFoundException: jakarta.json.spi.JsonProvider 错误。

将正确版本添加为顶级项目依赖项可以解决此问题。

如果您的应用程序还需要 javax.json,您可以添加 javax.json:javax.json-api:1.1.4 依赖项,它等效于 jakarta.json:jakarta.json-api:1.1.6