ElasticSearch基础入门(五)使用Spring Data ElasticSearch操作ES

ElasticSearch基础入门(五)使用Spring Data ElasticSearch操作ES

  • 一、简介
  • 二、起步
    • 1. 导入jar包
    • 2. 编写配置文件
    • 3. 在实体类中添加注解信息
      • ①. `@Document`
      • ②. `@Id`
      • ③. `@Field`
  • 三、使用ElasticSearchTemplate
    • 1. 创建索引库
    • 2.添加映射信息

一、简介

Spring Data 的使命是给各种数据访问提供统一的编程接口,不管是关系型数据库(如MySQL),还是非关系数据库(如Redis),或者类似Elasticsearch这样的索引数据库。从而简化开发人员的代码,提高开发效率。

特征:

  • 支持Spring的基于@Configuration的java配置方式,或者XML配置方式
  • 提供了用于操作ES的便捷工具类**ElasticsearchTemplate**。包括实现文档到POJO之间的自动智能映射。
  • 利用Spring的数据转换服务实现的功能丰富的对象映射
  • 基于注解的元数据映射方式,而且可扩展以支持更多不同的数据格式
  • 根据持久层接口自动生成对应实现方法,无需人工编写基本操作代码(类似mybatis,根据接口自动得到实现)。当然,也支持人工定制查询

二、起步

1. 导入jar包

<dependency>
	<groupId>org.springframework.bootgroupId>
	<artifactId>spring-boot-starter-data-elasticsearchartifactId>
dependency>

2. 编写配置文件

需要指定集群名称与节点ip。采用的是TCP协议,所以配置的端口是9300。同时,在ES中必须开启TCP远程访问,即在elasticsearch.yml文件中设置transport.host: 0.0.0.0

spring:
  data:
    elasticsearch:
      cluster-name: elasticsearch
      # 采用的是TCP协议,所以配置的端口是9300
      cluster-nodes: 192.168.142.128:9300

3. 在实体类中添加注解信息

@Data
@Document(indexName = "item", type = "docs", shards = 1, replicas = 0)
@NoArgsConstructor
@AllArgsConstructor
public class Item {

    @Id
    private Long id;

    @Field(type = FieldType.Text, analyzer = "ik_max_word")
    private String title;

    @Field(type = FieldType.Keyword)
    private String category;

    @Field(type = FieldType.Keyword)
    private String brand;

    @Field(type = FieldType.Double)
    private Double price;

    @Field(type = FieldType.Keyword, index = false)
    private String images;
}

①. @Document

@Document作用在类上,标记实体类为文档对象。通常有以下属性。

  • indexName:索引库名称,必须为小写
  • type:对应在索引库中的类型。已经移除。
  • shards:分片数量,默认为5。
  • replicas:副本数量,默认为1。

②. @Id

@Id 作用在类中的成员变量上,标记一个字段作为_id。

③. @Field

@Field作用在类中的成员变量上,标记为文档的字段,可以指定字段的映射。

  • type:字段类型,在FieldType这个枚举类中选值。
  • index: 是否索引,bool,默认true。
  • store:是否额外存储,bool,默认false,ES会在_source中一定会有一份数据。
  • analyzer:分词器名称:ik_max_word。

三、使用ElasticSearchTemplate

1. 创建索引库

我们在Item这个类上添加过@Document注解,因此会根据这里面的属性去创建一个索引库。

// 创建索引库
boolean index = elasticsearchTemplate.createIndex(Item.class);   

2.添加映射信息

我们在Item类中的各个成员变量上添加了@Field注解,并指定了字段类型,因此会根据这些属性创建映射信息。

 // 添加映射信息
 elasticsearchTemplate.putMapping(Item.class);

你可能感兴趣的:(elasticsearch,elasticsearch)