基于spring data使用Elasticsearch
定义Mapping
@Setting注解
可以通过该注解自定义一些设置,例如分片等等
1 2
| @Setting(settingPath=/com/test/house/domain/houseSetting.json) // 注意:路径为文件所在包路径转换为反斜杠模式,第一个反斜杠不能去掉
|
第一种方式:@Document注解
1 2 3 4 5 6 7 8 9 10
| @Document(indexName = "test_index", type = "house", shards = 3, replicas = 1, refreshInterval = "-1") // 功能上比较简单,可以在属性上使用@Id,@Field等注解标注字段类型和索引方式 //定义字符串类型的ID字段 @Id @Field(type = FieldTYpe.String, index = FiledIndex.not_analyzed) private String id; //比较适合简单场景,需要自定义一些Mapping配置时候比较无力,使用版本为Spring Boot1.2.2,不知道最新版有何变化? // 比如:我需要启用_timestamp功能就完全没有找到办法...
|
第二种方式:@Mapping注解
1 2 3 4 5 6 7 8 9 10
| // 这种方式可以按照自己的意图定义索引,但是比较麻烦的是JavaBean和Mapping之间的映射关系,需要写两遍 @Mapping(mappingPath="/com/test/house/domain/house.json") { "house":{ "_timestamp":{"enabled":true} }, "properties":{ ... } }
|
上面两种方式不能一起使用,Mapping会覆盖Document的配置,很麻烦啊,我只是想要简单的配置一个_timestamp.enabled=true,而又不像在json文件中
把Mapping全部重写一遍,还是没有找到好的解决办法…实在不行就自定义字段解决了…
看了es客户端jar中倒是有TimeStamp的支持,错略看了下Spring Data Es的代码,发现这个版本完全没有啊,尼玛应该是没有这个支持…
最终只有曲线救国了,自己设置了一个ts字段进行维护(┬_┬),这些该死的库带来的方便的同时也真是带来不少的麻烦啊,下次再做项目一定自己封装一个…
Es中关于建议功能的几种实现方式
不错的文章