在建立索引时,我使用了
"dynamic":"strict",
保证不会传入脏数据。
然后我使用了
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>
来集成es
下面是我的java中的bean与mapper
@Data @Document(indexName = "article") @AllArgsConstructor @NoArgsConstructor public class ArticleDoc implements Serializable { @Id @Field(type = FieldType.Keyword) private Integer id; @Field(type = FieldType.Text) private String title; @Field(type = FieldType.Text) private String content; @Field(type = FieldType.Text, index = false) private String author; @Field(type = FieldType.Date, index = false) private String time; @Field(type = FieldType.Text) private String describe; //高亮封装 @Transient private Map<String, List<String>> highlights; }
@Repository //泛型是Doc对象和ID的类型 public interface ArticleMapper extends ElasticsearchRepository<ArticleDoc, Integer> { }
在插入索引时总是显示doc实体与es中的索引不匹配,后面重新修改了索引建立,发现插入时果然多了东西。
原因是Spring Data Elasticsearch 默认会将文档的 Java 类名存储在 _class
字段中。这样,在查询结果返回时,Spring Data Elasticsearch 可以自动将 JSON 文档转换回对应的 Java 对象。
所以如果使用springdataes的话就要选择在建索引的时候要不不再使用strict,要不就在建立索引的时候填上_class
标签:springboot,Field,private,start,索引,FieldType,type,es,String From: https://www.cnblogs.com/kun1790051360/p/18508717