现在市场上的搜索技术一般都是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] 纯文本查看 复制代码 @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] 纯文本查看 复制代码 @Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Documented
@Inherited
public @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;
}
|