在 spring 数据 elasticsearch 中保存 ENUM

Saving ENUM in spring data elasticsearch

我正在尝试使用 spring 数据 elasticsearch 将我的实体保存在 elasticsearch 中,所有属性(包括对象)都被保存,除了枚举它总是存储为 null,这是我的实体

@Entity
@Document(indexName="invoices", type="invoices", shards = 1)
public class Invoice {

@Transient
@JsonIgnore
@org.springframework.data.annotation.Id
private String searchIndex;

@Field(type = FieldType.String)
private InvoiceStateEnum state;

带和不带 @Field 属性状态被保存为 null,即使正在保存的对象具有此枚举的值。

感谢任何帮助

由于 spring-data-elasticsearch 使用 Jackson,您可以将 @JsonFormat.Shape.STRING 注释添加到您的枚举中:

@JsonFormat.Shape.STRING
public enum InvoiceStateEnum {
  // your enum code
}

我能够通过删除我的项目下的文件夹数据并重新运行应用程序来解决问题,似乎由于某种原因弹性搜索没有更新记录所以我得到了 null 因为属性是最近添加的。