-
Notifications
You must be signed in to change notification settings - Fork 275
Closed
Labels
Area: SpecificationRelated to the API spec used to generate client codeRelated to the API spec used to generate client code
Description
Java API client version
8.2.2
Java version
Kotlin 1.70
Elasticsearch Version
8.2.2
Problem description
When creating our index through the new Elasticsearch Java Api Client (8.2.2) we discovered that we can't create a Char Filter that only has the field mappings_path
set. The field mappings
seems to be mandatory although mappings_path
is set. In our old version with the old Rest-High-Level-Client this was possible and should be possible again.
This is how we read the json config in our kotlin class:
val configAsJson = Json.parseToJsonElement(ourIndexConfigAsJsonString).jsonObject
esClient.indices().create { indexCreateBuilder ->
indexCreateBuilder
.index(indexNameService.createInternalIndexName(tenant, esConfig.indexBaseName))
.mappings { it.withJson(StringReader(configAsJson["mappings"].toString())) }
.settings { it.withJson(StringReader(configAsJson["settings"].toString())) }
}
Only this json config is accepted:
"char_filter": {
"multi_char_filter": {
"type": "mapping",
"mappings": [
"xyz => xyz"
],
"mappings_path": "analysis/multi-char-replacement.txt"
}
}
When we remove the mappings
portion we get the following error:
co.elastic.clients.json.JsonpMappingException: Error deserializing co.elastic.clients.elasticsearch._types.analysis.CharFilterDefinition: co.elastic.clients.util.MissingRequiredPropertyException: Missing required property 'MappingCharFilter.mappings' (JSON path: analysis.char_filter.multi_char_filter) (line no=1, column no=780, offset=779)
at co.elastic.clients.json.JsonpMappingException.from0(JsonpMappingException.java:134)
at co.elastic.clients.json.JsonpMappingException.from(JsonpMappingException.java:121)
at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:206)
at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:136)
at co.elastic.clients.json.BuildFunctionDeserializer.deserialize(BuildFunctionDeserializer.java:53)
at co.elastic.clients.json.DelegatingDeserializer$SameType.deserialize(DelegatingDeserializer.java:48)
at co.elastic.clients.json.UnionDeserializer$SingleMemberHandler.deserialize(UnionDeserializer.java:74)
at co.elastic.clients.json.UnionDeserializer.deserialize(UnionDeserializer.java:291)
at co.elastic.clients.json.UnionDeserializer.deserialize(UnionDeserializer.java:258)
at co.elastic.clients.json.DelegatingDeserializer$SameType.deserialize(DelegatingDeserializer.java:43)
at co.elastic.clients.json.JsonpDeserializerBase$StringMapDeserializer.deserialize(JsonpDeserializerBase.java:347)
at co.elastic.clients.json.JsonpDeserializerBase$StringMapDeserializer.deserialize(JsonpDeserializerBase.java:331)
at co.elastic.clients.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:75)
at co.elastic.clients.json.ObjectDeserializer$FieldObjectDeserializer.deserialize(ObjectDeserializer.java:71)
at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:180)
at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:136)
at co.elastic.clients.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:75)
at co.elastic.clients.json.ObjectBuilderDeserializer.deserialize(ObjectBuilderDeserializer.java:79)
at co.elastic.clients.json.DelegatingDeserializer$SameType.deserialize(DelegatingDeserializer.java:43)
at co.elastic.clients.json.ObjectDeserializer$FieldObjectDeserializer.deserialize(ObjectDeserializer.java:71)
at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:180)
at co.elastic.clients.util.WithJsonObjectBuilderBase.withJson(WithJsonObjectBuilderBase.java:66)
at co.elastic.clients.json.WithJson.withJson(WithJson.java:57)
at de.company.ourProduct.EsOperations.createIndex$lambda-2$lambda-1(EsOperations.kt:132)
...
Metadata
Metadata
Assignees
Labels
Area: SpecificationRelated to the API spec used to generate client codeRelated to the API spec used to generate client code