[英]How to use Mongo Auditing and a UUID as id with Spring Boot 2.2.x?
[英]Spring Boot(2.2.X) - Spring Elastic Search(6.8.X) - Different JSONProperty and Field Name
将 Spring 从 2.1.X 引导到2.2.X并将弹性搜索从6.3.X更新到 6.8.X 。
得到映射异常,解决映射异常,将文档变量重命名为 myDocument。
现在elasticSearchRepo.SaveAll(objectTosave)
值不会保留在文档中。 文档中存在其他属性,如 id、类别。
有什么办法可以有不同的 fieldName 和 jsonProperty?
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
@NoArgsConstructor
@Data
@EqualsAndHashCode
@ToString
@Document(indexName="my_document_index", type="information", createIndex=false)
@JsonIgnoreProperties(ignoreUnKnown = true)
@JsonInclude(Include.NON_NULL)
public class MyInstance
{
@Field
private String id;
@Field
private String category;
@Field
@JsonProperty("document")
private MyObject mydocument;
/** JSON Creator **/
@JsonCreator
public MyInstance(@JsonProperty("id") id, @JsonProperty("category") category,
@JsonProperty("document") mydocument)
{
this.id = id;
this.category = category;
this.mydocument = mydocument;
}
}
不需要用@Field
注释id
属性,你应该把@Id
放在那里。 虽然这不是必需的,但由于属性的名称就足够了,它可以更清楚地说明它是什么。
至于mydocument
属性没有被持久化:它在 Elasticsearch 中,名称为mydocument 。 @JsonProperty("document")
在 Jackson 映射时,在 JSON 中定义此属性的名称,例如当您通过 Z50780F47F6839D47D60BC4555EE00C3F 端点获取此属性时。 重命名为mydocument
会禁止该属性被解释为 id 属性的错误。
但我认为您也希望在 Elasticsearch 中作为文档。 您可以通过在@Field
注释中设置来定义 Elasticsearch 中的属性名称:
@Document(indexName="my_document_index", createIndex=false)
public class MyInstance
{
@Id
private String id;
@Field
private String category;
@Field(name = "document")
@JsonProperty("document")
private MyObject mydocument;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.