【背景】
springboot2,里面已经有JPA的DAO层了,现在又想加个ES,好实现分词检索和相关性推荐
【坑】
1,之前想写2个DAO,一个ESDAO,一个普通DAO,然后公用一个pojo,不行,老是冲突。所以我写了2个pojo。
解决:esrepository写法跟jparepository一毛一样。然后dao层放一个xxDAO,一个xxESDAO,pojo层放一个xx,一个xxES。
2,在调试过程中,我的pojo经常会改(xxES),所以es会报类型匹配错误。原因是你之前已经有那个indexname了,后来改了(增加了属性,或者减少),跟之前的就匹配不上了。
解决:你可以换个indexname(pojo里面换),也可以在kibnan里面把那个indexname delete,再重启项目(重启项目的时候,spring会连接到ES,生成index)
删除index可以看这个:https://www.lagou.com/lgeduarticle/8326.html
3,ES的时间类型,真的是梦魇。跟我之前DAO里面的时间( yyyy-MM-dd HH:mm:ss )一直匹配不上。后来终于找到一个能用的。
解决:pojo里的时间,注解成这种:
@Field(type=FieldType