-
Notifications
You must be signed in to change notification settings - Fork 41.5k
Closed
Description
Using default data-elasticsearch auto configuration the mapper used to convert payloads is not configured to handle org.springframework.data.elasticsearch.core.document.MapDocument
which leads to errors when adding data.
jakarta.json.JsonException: Cannot find a serializer for type org.springframework.data.elasticsearch.core.document.MapDocument. Consider using a full-featured JsonpMapper
at co.elastic.clients.json.SimpleJsonpMapper.serialize(SimpleJsonpMapper.java:113) ~[elasticsearch-java-8.4.3.jar:na]
at co.elastic.clients.json.JsonpUtils.serialize(JsonpUtils.java:146) ~[elasticsearch-java-8.4.3.jar:na]
at co.elastic.clients.elasticsearch.core.IndexRequest.serialize(IndexRequest.java:290) ~[elasticsearch-java-8.4.3.jar:na]
at co.elastic.clients.json.JsonpMapperBase$JsonpSerializableSerializer.serialize(JsonpMapperBase.java:111) ~[elasticsearch-java-8.4.3.jar:na]
at co.elastic.clients.json.JsonpMapperBase$JsonpSerializableSerializer.serialize(JsonpMapperBase.java:108) ~[elasticsearch-java-8.4.3.jar:na]
at co.elastic.clients.json.SimpleJsonpMapper.serialize(SimpleJsonpMapper.java:110) ~[elasticsearch-java-8.4.3.jar:na]
at co.elastic.clients.transport.rest_client.RestClientTransport.prepareLowLevelRequest(RestClientTransport.java:214) ~[elasticsearch-java-8.4.3.jar:na]
at co.elastic.clients.transport.rest_client.RestClientTransport.performRequest(RestClientTransport.java:145) ~[elasticsearch-java-8.4.3.jar:na]
at co.elastic.clients.elasticsearch.ElasticsearchClient.index(ElasticsearchClient.java:946) ~[elasticsearch-java-8.4.3.jar:na]
at org.springframework.data.elasticsearch.client.elc.ElasticsearchTemplate.lambda$doIndex$6(ElasticsearchTemplate.java:213) ~[spring-data-elasticsearch-5.0.0-RC1.jar:5.0.0-RC1]
at org.springframework.data.elasticsearch.client.elc.ElasticsearchTemplate.execute(ElasticsearchTemplate.java:538) ~[spring-data-elasticsearch-5.0.0-RC1.jar:5.0.0-RC1]
at org.springframework.data.elasticsearch.client.elc.ElasticsearchTemplate.doIndex(ElasticsearchTemplate.java:213) ~[spring-data-elasticsearch-5.0.0-RC1.jar:5.0.0-RC1]
at org.springframework.data.elasticsearch.core.AbstractElasticsearchTemplate.save(AbstractElasticsearchTemplate.java:204) ~[spring-data-elasticsearch-5.0.0-RC1.jar:5.0.0-RC1]
at org.springframework.data.elasticsearch.repository.support.SimpleElasticsearchRepository.lambda$save$5(SimpleElasticsearchRepository.java:172) ~[spring-data-elasticsearch-5.0.0-RC1.jar:5.0.0-RC1]
at org.springframework.data.elasticsearch.repository.support.SimpleElasticsearchRepository.executeAndRefresh(SimpleElasticsearchRepository.java:344) ~[spring-data-elasticsearch-5.0.0-RC1.jar:5.0.0-RC1]
at org.springframework.data.elasticsearch.repository.support.SimpleElasticsearchRepository.save(SimpleElasticsearchRepository.java:172) ~[spring-data-elasticsearch-5.0.0-RC1.jar:5.0.0-RC1]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
To work around this issue it is possible to provide ElasticsearchConfiguration
as follows
@Configuration
static class Config extends ElasticsearchConfiguration {
@Override
public ClientConfiguration clientConfiguration() {
return ClientConfiguration.localhost(); // or any other config
}
}
The above however has the downside, that it breaks when when configuration is created via AOT.
Field repository in com.example.data.elasticsearch.CLR required a bean named 'elasticsearchTemplate' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean named 'elasticsearchTemplate' in your configuration.
The behaviour can be reproduced using the data-elasticsearch
sample from this fork. Just add/remove the configuration in DataElasticsearchApplication
@sothawo maybe you can help with more insights on required/default mapping configuration.
Metadata
Metadata
Assignees
Labels
type: bugA general bugA general bug