Migrate from Elasticsearch 8 to 9
io.moderne.elastic.elastic9.MigrateToElasticsearch9Artifactio.moderne.recipe:rewrite-elasticThis recipe performs a comprehensive migration from Elasticsearch 8 to Elasticsearch 9, addressing breaking changes, API removals, deprecations, and required code modifications. Migrates to the co.elastic.clients:elasticsearch-rest5-client transport (Apache HttpClient 5.x), which is Elastic's recommended path for the 9.x line. To retain the legacy Apache HttpClient 4.x transport, run io.moderne.elastic.elastic9.MigrateToElasticsearch9LegacyTransport instead.
Add to your build
~/.gradle/gradle.properties
codeGenomeUsername=you@example.com
codeGenomeToken=YOUR_DOWNLOAD_TOKEN
build.gradle.kts
plugins {
id("org.openrewrite.rewrite") version("latest.release")
}
rewrite {
activeRecipe("io.moderne.elastic.elastic9.MigrateToElasticsearch9")
}
repositories {
mavenCentral()
maven {
url = uri("https://artifacts.codegenomeproject.org/maven")
credentials {
username = providers.gradleProperty("codeGenomeUsername").get()
password = providers.gradleProperty("codeGenomeToken").get()
}
}
}
dependencies {
rewrite("io.moderne.recipe:rewrite-elastic:0.9.0")
}
Then run
./gradlew rewriteRunUsage
This recipe has no required configuration options. You’ll need the Moderne CLI configured before running the command below.
mod run . --recipe io.moderne.elastic.elastic9.MigrateToElasticsearch9If the recipe isn’t available locally, install it with:
mod config recipes jar install io.moderne.recipe:rewrite-elastic:RELEASEDefinition
This recipe runs the following recipes in order.
- Migrate from Elasticsearch 8 to 9 (API renames, transport-agnostic)
io.moderne.elastic.elastic9.MigrateToElasticsearch9Core - Change type
RestClienttoRest5Clientorg.openrewrite.java.ChangeType - Change type
RestClientBuildertoRest5ClientBuilderorg.openrewrite.java.ChangeType - Change type
org.elasticsearch.client.Requesttoco.elastic.clients.transport.rest5_client.low_level.Requestorg.openrewrite.java.ChangeType - Change type
org.elasticsearch.client.Responsetoco.elastic.clients.transport.rest5_client.low_level.Responseorg.openrewrite.java.ChangeType - Change type
org.elasticsearch.client.ResponseExceptiontoco.elastic.clients.transport.rest5_client.low_level.ResponseExceptionorg.openrewrite.java.ChangeType - Change type
org.elasticsearch.client.ResponseListenertoco.elastic.clients.transport.rest5_client.low_level.ResponseListenerorg.openrewrite.java.ChangeType - Change type
org.elasticsearch.client.RequestOptionstoco.elastic.clients.transport.rest5_client.low_level.RequestOptionsorg.openrewrite.java.ChangeType - Change type
org.elasticsearch.client.RequestLoggertoco.elastic.clients.transport.rest5_client.low_level.RequestLoggerorg.openrewrite.java.ChangeType - Change type
org.elasticsearch.client.Nodetoco.elastic.clients.transport.rest5_client.low_level.Nodeorg.openrewrite.java.ChangeType - Change type
org.elasticsearch.client.NodeSelectortoco.elastic.clients.transport.rest5_client.low_level.NodeSelectororg.openrewrite.java.ChangeType - Change type
org.elasticsearch.client.HasAttributeNodeSelectortoco.elastic.clients.transport.rest5_client.low_level.HasAttributeNodeSelectororg.openrewrite.java.ChangeType - Change type
org.elasticsearch.client.PreferHasAttributeNodeSelectortoco.elastic.clients.transport.rest5_client.low_level.PreferHasAttributeNodeSelectororg.openrewrite.java.ChangeType - Change type
org.elasticsearch.client.DeadHostStatetoco.elastic.clients.transport.rest5_client.low_level.DeadHostStateorg.openrewrite.java.ChangeType - Change type
org.elasticsearch.client.Cancellabletoco.elastic.clients.transport.rest5_client.low_level.Cancellableorg.openrewrite.java.ChangeType - Change type
org.elasticsearch.client.WarningsHandlertoco.elastic.clients.transport.rest5_client.low_level.WarningsHandlerorg.openrewrite.java.ChangeType - Change type
org.elasticsearch.client.WarningFailureExceptiontoco.elastic.clients.transport.rest5_client.low_level.WarningFailureExceptionorg.openrewrite.java.ChangeType - Change type
org.elasticsearch.client.HttpAsyncResponseConsumerFactorytoco.elastic.clients.transport.rest5_client.low_level.HttpAsyncResponseConsumerFactoryorg.openrewrite.java.ChangeType - Change type
org.elasticsearch.client.HttpGetWithEntitytoco.elastic.clients.transport.rest5_client.low_level.HttpGetWithEntityorg.openrewrite.java.ChangeType - Change type
org.elasticsearch.client.HttpDeleteWithEntitytoco.elastic.clients.transport.rest5_client.low_level.HttpDeleteWithEntityorg.openrewrite.java.ChangeType - Change type
org.elasticsearch.client.LanguageRuntimeVersionstoco.elastic.clients.transport.rest5_client.low_level.LanguageRuntimeVersionsorg.openrewrite.java.ChangeType - Change type
RestClientTransporttoRest5ClientTransportorg.openrewrite.java.ChangeType - Change type
RestClientOptionstoRest5ClientOptionsorg.openrewrite.java.ChangeType - Change type
RestClientHttpClienttoRest5ClientHttpClientorg.openrewrite.java.ChangeType - Change type
co.elastic.clients.transport.rest_client.SafeResponseConsumertoco.elastic.clients.transport.rest5_client.SafeResponseConsumerorg.openrewrite.java.ChangeType - Change type
co.elastic.clients.transport.rest_client.MultiBufferEntitytoco.elastic.clients.transport.rest5_client.MultiBufferEntityorg.openrewrite.java.ChangeType - Add comment to import statement matching
org.elasticsearch.client.HeapBufferedAsyncResponseConsumerorg.openrewrite.java.AddCommentToImport - Add comment to import statement matching
org.elasticsearch.client.PersistentCredentialsAuthenticationStrategyorg.openrewrite.java.AddCommentToImport - Add Gradle or Maven dependency
org.openrewrite.java.dependencies.AddDependency - Remove a Gradle or Maven dependency
org.openrewrite.java.dependencies.RemoveDependency
Data tables
Structured output this recipe can produce.
- Source files that had resultsSource files that were modified by the recipe run.
org.openrewrite.table.SourcesFileResults - Source files that had search resultsSearch results that were found during the recipe run.
org.openrewrite.table.SearchResults - Source files that errored on a recipeThe details of all errors produced by a recipe run.
org.openrewrite.table.SourcesFileErrors - Recipe performanceStatistics used in analyzing the performance of recipes.
org.openrewrite.table.RecipeRunStats