1. 扩展Mapping
增加以下三个属性:
@Field(store = true)
private Float money;
@Field(store = true,type = FieldType.Keyword)
private String sign;
@Field(store = true)
private String description;
添加数据
public void createIndexStu(){
Stu stu = new Stu();
stu.setStuId(1002L);
stu.setName("gril");
stu.setAge(19);
stu.setMoney(18.8f);
stu.setSign("i am spider man");
stu.setDescription("I wish i am spider man");
IndexQuery indexQuery = new IndexQueryBuilder().withObject(stu).build();
//index:创建索引,并添加数据
esTemplate.index(indexQuery);
}
结果,这条数据被增加进去,sign、money、description这三个属性也被映射进去。
?查看mapping映射,sign的类型我们设置的是keyword,但是es还是映射成text,这是es的问题,我们先不管。
2. 删除索引
@Test
public void deleteIndexStu(){
esTemplate.deleteIndex(Stu.class); //会自动识别到在Stu实体类里indexName = "stu"
}
?会自动识别到在Stu实体类里indexName = "stu"
3. 建议?
3.1 不建议使用 ElasticsearchTemplate 对索引进行管理(创建索引,更新映射,删除索引) 索引就像是数据库或者数据库中的表,我们平时是不会通过java代码频繁的去创建修改删除数据库或表的, 我们只会针对数据做CRUD的操作在es中也是同理,我们尽量使用ElasticsearchTemplate 对文档数据做CRUD的操作。
3.2? 属性(FieldType)类型不灵活(age设置的是Integer类型,es给设置成long,sign设置的是keyword类型,es给设置成text);主分片与副本分片数无法设置。
|