前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >spring‐data‐elasticsearch里POJO中注解的@Document @Field 解析

spring‐data‐elasticsearch里POJO中注解的@Document @Field 解析

作者头像
名字是乱打的
发布2022-05-13 11:07:28
5630
发布2022-05-13 11:07:28
举报
文章被收录于专栏:软件工程

我们在使用搜索服务时候,通常要建立一个索引库来方便搜索和展示,这里常用的就是ElasticSearch,ElasticSearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。

spring‐data‐elasticsearch的使用时候需要注意的点

主要体现在pojo实体中

一真正开发中,我们通常要在实体类上注明@Document
代码语言:javascript
复制
@Document(indexName = "zyh_article",type = "article")

@Document注解标明实体是elasticsearch种的Document,其属性可以标明属于的索引和类型----对应数据库中的数据库名和表名,其中type不预先创建也可以,没预先创建的它会自动创建一个与实体相匹配的type

代码语言:javascript
复制
Douument注解源码查看
@Persistent
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface Document {
    String indexName();//索引库的名称,建议以项目的名称命名

    String type() default "";//类型,建议以实体的名称命名-索引库的type

    boolean useServerConfiguration() default false;

    short shards() default 5;//默认分区数

    short replicas() default 1; //每个分区默认的备份数

    String refreshInterval() default "1s";//索引文件存储类型

    String indexStoreType() default "fs";

    boolean createIndex() default true;
}
二 实体类中除了类上的@Document注解,我们还要在记录中加@Field注解
代码语言:javascript
复制
@Field 源码分析,查看其内部值

public @interface Field {
 
FieldType type() default FieldType.Auto; //自动检测属性的类型,可以根据实际情况自己设置
 
FieldIndex index() default FieldIndex.analyzed; //是否分词,默认情况下分词,一般默认分词就好,除非这个字段你确定查询时不会用到
 
DateFormat format() default DateFormat.none; //时间类型的格式化
 
String pattern() default ""; 
 
boolean store() default false; //默认情况下不存储原文

String analyzer() default ""; //指定字段建立索引分词时指定的分词器
 //比如对索引库中的中国人进行分词
String searchAnalyzer() default ""; //指定字段被搜索时使用的分词器
  //比如输入框中写中国人,然后服务器对输入框中的中国人进行分词
String[] ignoreFields() default {}; //如果某个字段需要被忽略
 
boolean includeInParent() default false;
}

与前端交互我们仍可以使用REST风格结合SpringMVC 后端数据库,我们可以使用spring-data-elasticsearch

代码语言:javascript
复制
pom
<dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-elasticsearch</artifactId>
            <version>3.0.7.RELEASE</version>
        </dependency>
代码语言:javascript
复制
public interface ArticleSearchDao extends ElasticsearchRepository<Article,String> {
    public Page<Article> findByContentOrTitleLike(String content, String title, Pageable pageable);
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • spring‐data‐elasticsearch的使用时候需要注意的点
    • 一真正开发中,我们通常要在实体类上注明@Document
      • 二 实体类中除了类上的@Document注解,我们还要在记录中加@Field注解
      相关产品与服务
      Elasticsearch Service
      腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档