黑马程序员技术交流社区

标题: 【广州校区】+【原创】+Spring Data Elasticsearch常用注解 [打印本页]

作者: wujianhui    时间: 2019-5-9 09:42
标题: 【广州校区】+【原创】+Spring Data Elasticsearch常用注解
现在市场上的搜索技术一般都是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;
}









欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2