Closed
Description
Java API client version
8.7.0
Java version
17
Elasticsearch Version
8.5.2
Problem description
Given following pipeline definition:
{
"description": "test",
"processors": [
{
"remove": {
"keep": ["properties", "firstName", "lastName"],
"description": "Remove the fields other than expected (please also see index-definition)"
}
}
]
}
We do:
<dataFile>.getInputStream().bufferedReader().use { bufferedReader ->
val objectMapper = jacksonObjectMapper()
val dataTransformationDefinition = objectMapper.readValue<Map<String, Any>>(bufferedReader)
val processorList = dataTransformationDefinition["processors"] as List<*>
val processors = processorList
.map { processor -> objectMapper.writeValueAsString(processor) }
.map { processorJson ->
Processor.Builder().withJson(processorJson.byteInputStream()).build()
}
// create ingest pipeline via Elasticsearch client and PutPipelineRequest
}
But this fails with:
Original Stack Trace:
at co.elastic.clients.json.ObjectDeserializer.parseUnknownField(ObjectDeserializer.java:233)
at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:190)
at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:148)
at co.elastic.clients.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:77)
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:78)
at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:192)
at co.elastic.clients.util.WithJsonObjectBuilderBase.withJson(WithJsonObjectBuilderBase.java:54)
at co.elastic.clients.json.WithJson.withJson(WithJson.java:43)
The reason is that the keep
field is not present in RemoveProcessor deserializer