现在市场上的搜索技术一般都是solr与elasticsearch,两个技术各有优缺点,而现在越来越多的企业采用elasticsearch技术,所以了解elasticsearch技术是很有必要的,而Spring Data Elasticsearch是spring整合elasticsearch,简化对elasticsearch操作的一个框架,下面就讲解一下Spring Data Elasticsearch中一些常用的注解:
1.注解@Document
我们知道在elasticsearch中我们将数据存储在索引中,而索引里面有文档(document),文档其实就相当于mysql数据库中的表的一条数据。@Document注解作用在类上,标记实体类为文档对象,常用属性如下:
(1)indexName:对应索引库名称;
(2)type:对应在索引库中的类型;
(3)shards:分片数
(4)replicas:副本数;
注解@Document源码及相关注释如下:
[Java]
纯文本查看
复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 | @Persistent@Inherited@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.TYPE})public @interface Document { /*文档名称,存储在索引库中时的标识名称,一般建议使用项目的名称*/ String indexName(); /*文档类型,一般建议使用实体的名称进行命名*/ String type() default ""; /*是否使用服务配置,一般情况下不建议使用*/ boolean useServerConfiguration() default false; /*默认分区数*/ short shards() default 5; /*每个默认分区默认的备份数*/ short replicas() default 1; /*默认刷新时间间隔*/ String refreshInterval() default "1s"; /*默认索引文件存储文件类型*/ String indexStoreType() default "fs"; /*是否创建索引*/ boolean createIndex() default true;} |
2.注解@Field
@Field一般作用在成员变量上,标记为文档的字段,并指定映射属性;
(1)@Id:作用在成员变量,标记一个字段为id主键;一般id字段或是域不需要存储也不需要分词;
(2)type:字段的类型,取值是枚举,FieldType;
(3)index:是否索引,布尔值类型,默认是true;
(4)store:是否存储,布尔值类型,默认值是false;
(5)analyzer:分词器名称
注解@Field源码及相关注释如下:
[Java]
纯文本查看
复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | @Retention(RetentionPolicy.RUNTIME)@Target(ElementType.FIELD)@Documented@Inheritedpublic @interface Field { /*自动检测属性类型,可以根据实际情况自己设置*/ FieldType type() default FieldType.Auto; /*是否分词,默认情况下分词,一般默认分词就好,除非这个字段在查询时不会被用到*/ boolean index() default true; /*时间类型格式化*/ DateFormat format() default DateFormat.none; String pattern() default ""; /*是否存储,默认情况时不存储原文*/ boolean store() default false; boolean fielddata() default false; /*指定字段搜索时使用的分词器*/ String searchAnalyzer() default ""; String analyzer() default ""; /*指定需要被忽略的字段*/ String[] ignoreFields() default {}; boolean includeInParent() default false;} |
更多技术资讯可关注:gzitcast