﻿---
title: Elasticsearch Java Client 9.4.0
description: Discover what changed in the 9.4.0 version of the Java client. This version presents many updates to existing fields that were wrongly mapped, or incomplete...
url: https://docs-v3-preview.elastic.dev/elastic/elasticsearch-java/pull/1224/release-notes/9-4-0
products:
  - Elasticsearch Client
---

# Elasticsearch Java Client 9.4.0
Discover what changed in the 9.4.0 version of the Java client.

## Breaking changes

This version presents many updates to existing fields that were wrongly mapped, or incomplete. Here is the complete list of changes:
<dropdown title="From generic json to specific type">
  - elasticsearch.inference.CustomResponseParams
    - `jsonParser`: modified from `json.JsonData` to `Map`
  - elasticsearch.inference.CustomServiceSettings
    - `headers`: modified from `json.JsonData` to `Map`, now required
  - `inputType`: modified from `json.JsonData` to `Map`, now required
  - `queryParameters`: modified from `json.JsonData` to `List`, now required
  - `secretParameters`: modified from `json.JsonData` to `Map`
  - elasticsearch.inference.CustomTaskSettings
    - `parameters`: modified from `json.JsonData` to `Map`, now required
  - elasticsearch.inference.OpenAITaskSettings
    - `headers`: modified from `json.JsonData` to `Map`, now required
</dropdown>

<dropdown title="From String to Enum">
  - elasticsearch.inference.ContentObject
    - `type`: modified from `String` to `elasticsearch.inference.ContentType`
  - elasticsearch.searchable_snapshots.MountRequest
    - `storage`: modified from `String` to `elasticsearch.searchable_snapshots.mount.StorageOption`
</dropdown>

<dropdown title="Serialization changes">
  From this version of the client, CSV type URL parameters with value `null` will no longer be serialized as `null`, and will be instead filtered out.
  More information in the relevant PR [#1222](https://github.com/elastic/elasticsearch-java/pull/1222).
</dropdown>

<dropdown title="Type removals">
  - elasticsearch.indices.get_all_sample_configuration.IndexSamplingConfiguration: **removed**
  - elasticsearch.indices.DeleteSampleConfigurationRequest: **removed**
  - elasticsearch.indices.DeleteSampleConfigurationResponse: **removed**
  - elasticsearch.indices.get_sample.RawDocument: **removed**
  - elasticsearch.indices.GetAllSampleConfigurationRequest: **removed**
  - elasticsearch.indices.GetAllSampleConfigurationResponse: **removed**
  - elasticsearch.indices.GetSampleConfigurationRequest: **removed**
  - elasticsearch.indices.GetSampleConfigurationResponse: **removed**
  - elasticsearch.indices.GetSampleRequest: **removed**
  - elasticsearch.indices.GetSampleResponse: **removed**
  - elasticsearch.indices.GetSampleStatsRequest: **removed**
  - elasticsearch.indices.GetSampleStatsResponse: **removed**
  - elasticsearch.indices.PutSampleConfigurationRequest: **removed**
  - elasticsearch.indices.PutSampleConfigurationResponse: **removed**
  - elasticsearch.indices.SamplingConfiguration: **removed**
  - elasticsearch.inference.TextEmbeddingByteResult: **removed**
  - elasticsearch.inference.TextEmbeddingResult: **removed**
  - elasticsearch.security.ApiKeyManagedBy: **removed**
  - elasticsearch.streams.status.LogsStatus: **removed**
</dropdown>

<dropdown title="Other changes">
  - elasticsearch._types.aggregations.FieldDateMath
    - `value`: modified from `Double` to `Long`
  - elasticsearch.cluster.ComponentTemplate
    - `componentTemplate`: modified from `elasticsearch.cluster.ComponentTemplateNode` to `elasticsearch.cluster.ComponentTemplateNodeWithRollover`
  - elasticsearch.cluster.ComponentTemplateSummary
    - `lifecycle`: modified from `elasticsearch.indices.DataStreamLifecycleWithRollover` to `elasticsearch.indices.DataStreamLifecycle`
  - elasticsearch.indices.get_index_template.IndexTemplateItem
    - `indexTemplate`: modified from `elasticsearch.indices.IndexTemplate` to `elasticsearch.indices.IndexTemplateWithRollover`
  - elasticsearch.indices.IndexTemplateSummary
    - `lifecycle`: modified from `elasticsearch.indices.DataStreamLifecycleWithRollover` to `elasticsearch.indices.DataStreamLifecycle`
  - elasticsearch.security.authenticate.AuthenticateApiKey
    - `managedBy`: modified from `elasticsearch.security.ApiKeyManagedBy` to `elasticsearch.security.CredentialManagedBy`
  - elasticsearch.streams.StreamsStatusResponse
    - `logs`: modified from `elasticsearch.streams.status.LogsStatus` to `elasticsearch.streams.status.StreamStatus`
</dropdown>


## Features and enhancements

<dropdown title="Less generic exception messages">
  Introduced with [#1213](https://github.com/elastic/elasticsearch-java/pull/1213), adding more information taken from `ElasticsearchException`'s fields to the main error message.
  For example, instead of `all shards failed` the error message will be `all shards failed - Failed to parse query ["test"]`.
</dropdown>


## Deprecations

Nothing was deprecated in this version of the client.