Für diejenigen, die nach einer Lösung für Version ES-8 und Spring Boot:3.0 suchen
Erstellen Sie eine Konfigurationsdatei, die ElasticsearchConfiguration
erweitert und clientConfiguration
und elasticsearchClient
-Erstellung überschreibt.
Injecten Sie während der elasticsearchClient
-Erstellung Ihren eigenen objectMapper, der konfiguriert ist, um das Java 8-Zeitmodul zu verwenden, welches den Standard objectMapper überschreibt.
@Override
public ClientConfiguration clientConfiguration() {
return ClientConfiguration.builder()
.connectedTo( +":"+ )
.usingSsl()
.withBasicAuth(, )
.build();
}
@Override
public ElasticsearchClient elasticsearchClient(RestClient restClient) {
Assert.notNull(restClient, "restClient darf nicht null sein");
// Java8-Zeitmodul erstellen
JavaTimeModule module = new JavaTimeModule();
module.addSerializer(new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DateFormat.date_time_no_millis.getPattern())));
// Modul mit objectMapper registrieren
ObjectMapper objectMapper=new ObjectMapper()
.registerModule(module);
// Datumzeit in ISO-8601 konvertieren
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
// Eigenen jsonpMapper erstellen
JsonpMapper jsonpMapper=new JacksonJsonpMapper(objectMapper);
// Transport mit einem Jackson-Mapper erstellen
ElasticsearchTransport transport = new RestClientTransport(
restClient, jsonpMapper);
// Und den API-Client erstellen
return new ElasticsearchClient(transport);
}
Für diejenigen, die nach einer Lösung für Version ES-8 und Spring Boot:3.2 suchen
@Override
public ClientConfiguration clientConfiguration() {
return ClientConfiguration.builder()
.connectedTo( +":"+ )
.usingSsl()
.withBasicAuth(, )
.build();
}
@Override
public JsonpMapper jsonpMapper() {
var objectMapper = new ObjectMapper()
.registerModule(new JavaTimeModule().addSerializer(new ZonedDateTimeSerializer(DateTimeFormatter.ofPattern(DateFormat.date_time_no_millis.getPattern()))));
// Datumzeit in ISO-8601 konvertieren, ansonsten wird sie in Epoch konvertiert
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
return new JacksonJsonpMapper(objectMapper);
}
Maven-Abhängigkeit:
com.fasterxml.jackson.datatype
jackson-datatype-jsr310
2.14.0