gpt4 book ai didi

java - 在Spring中将包含json属性的实体保存到ElasticSearch

转载 作者:太空宇宙 更新时间:2023-11-04 13:51:14 24 4
gpt4 key购买 nike

我的 Spring 应用程序使用 Spring-data-elasticsearch ( https://github.com/spring-projects/spring-data-elasticsearch )。

我想将以下文档保存到elasticsearch数据库:

    @Document(indexName = "documents", type = "customEntity", replicas = 0, shards = 5)
public class CustomEntity implements Serializable{

@Id
private String Id;
@Field(type = FieldType.String)
private String Field1;
@Field(type = FieldType.Integer)
private int Field2;
@Field(type = FieldType.Object) //not sure which annotation I should use
private JsonObject exportJSON; //gson object

...getters and setters...
}

使用这种方式:

public class CustomEntityDao {

@Resource
ElasticsearchTemplate elasticsearchTemplate;

public void insertCustomEntity(CustomEntity entity){

IndexQuery indexQuery = new IndexQuery();
indexQuery.setId(entity.getCustomEntityId());
indexQuery.setObject(entity);

elasticsearchTemplate.index(indexQuery); //exception thrown

}

}

但我收到此错误:

com.fasterxml.jackson.databind.JsonMappingException: JsonObject (through reference chain: data.nosql.entities.CustomEntity ["exportJSON"]->com.google.gson.JsonObject["asString"])

我明白这个问题,但我不知道如何解决它。请问有什么想法吗?

最佳答案

我的猜测是 Jackson 试图将你的 gson 对象转换为可由 ES 可索引的字符串,但它不知道如何做到这一点。如果您发布完整的堆栈跟踪,它会更有帮助,但如果我必须猜测,您需要在“exportJSON”对象上使用 @JsonSerializer 注释。

关于java - 在Spring中将包含json属性的实体保存到ElasticSearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30249025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com