Installation

edit

Requirements:

  • Java 8 or later.
  • A JSON object mapping library to allow seamless integration of your application classes with the Elasticsearch API. The Java client has support for Jackson or a JSON-B library like Eclipse Yasson.

Releases are hosted on Maven Central. If you are looking for a SNAPSHOT version, the Elastic Maven Snapshot repository is available at https://snapshots.elastic.co/maven/.

Installation in a Gradle project by using Jackson

edit
dependencies {
    implementation 'co.elastic.clients:elasticsearch-java:8.0.1'
    implementation 'com.fasterxml.jackson.core:jackson-databind:2.12.3'

    // Needed only if you use the spring-dependency-management
    // and spring-boot Gradle plugins
    implementation 'jakarta.json:jakarta.json-api:2.0.1' 
}

See Spring Boot and jakarta.json for additional details.

Installation in a Maven project by using Jackson

edit

In the pom.xml of your project, add the following repository definition and dependencies:

<project>
  <dependencies>

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

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

    <!-- Needed only if you use the spring-boot Maven plugin -->
    <dependency> 
      <groupId>jakarta.json</groupId>
      <artifactId>jakarta.json-api</artifactId>
      <version>2.0.1</version>
    </dependency>

  </dependencies>
</project>

See Spring Boot and jakarta.json for additional details.

Spring Boot and jakarta.json

edit

Spring Boot comes with Gradle and Maven plugins to ease development and dependency management. These plugins define built-in versions for a number of well-known libraries.

One these libraries is jakarta.json:json-api that defines the standard Java JSON API. In version 1.x this library used the javax.json package, while in version 2.x it uses the jakarta.json package after the transition from JavaEE to JakartaEE.

The Java API Client depends on version 2.0.1 of this library, in order to use the newer and future-proof jakarta.json package. But Spring Boot’s Gradle plugin (at least in version 2.6 and below) overrides the Java API Client’s dependency to use version 1.1.6 in the older javax.json namespace.

This is why you have to explicitly add the jakarta.json:jakarta.json-api:2.0.1 dependency. Otherwise, this will result in the following exception at runtime: java.lang.ClassNotFoundException: jakarta.json.spi.JsonProvider.

If your application also requires javax.json you can add the javax.json:javax.json-api:1.1.4 dependency, which is equivalent to jakarta.json:jakarta.json-api:1.1.6.