当前位置 主页 > 网站技术 > 代码类 >

    Spring data elasticsearch使用方法详解

    栏目:代码类 时间:2020-01-29 15:06

    这篇文章主要介绍了Spring data elasticsearch使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    一、准备

    1.添加依赖

        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>

    2.application.yml

    spring:
     application:
      name: search-service
     data:
      elasticsearch:
       cluster-name: elasticsearch
       cluster-nodes: 192.168.25.129:9300

    3.实体类

    @Data
    @Document(indexName = "goods", type = "_doc", shards = 1, replicas = 0)
    public class Goods {
      @Idprivate Long id;
      @Field(type = FieldType.text, analyzer = "ik_max_word")
      private String all;
      @Field(type = FieldType.keyword, index = false)
      private String subTitle;private Long brandId;private Long cid1;private Long cid2;private Long cid3;private Date createTime;private List<Long> price;
      @Field(type = FieldType.keyword, index = false)
      private String skus;private Map<String, Object> specs;
    }

    @Document 作用在类,标记实体类为文档对象,一般有两个属性

    indexName:对应索引库名称 type:对应在索引库中的类型 shards:分片数量,默认5 replicas:副本数量,默认1 @Id 作用在成员变量,标记一个字段作为id主键 @Field 作用在成员变量,标记为文档的字段,并指定字段映射属性: type:字段类型,取值是枚举:FieldType index:是否索引,布尔类型,默认是true store:是否存储,布尔类型,默认是false analyzer:分词器名称

    二.、索引操作

    首先注入ElasticsearchTemplate

    @Resource
    private ElasticsearchTemplate elasticsearchTemplate;

    ● 创建索引

    elasticsearchTemplate.createIndex(Goods.class);

    ● 配置映射

    elasticsearchTemplate.putMapping(Goods.class);

    ● 删除索引

    //根据类
    elasticsearchTemplate.deleteIndex(Goods.class);
    //根据索引名
    elasticsearchTemplate.deleteIndex("goods");

    三、文档操作

    1.定义接口。也是SpringData风格

    public interface ItemRepository extends ElasticsearchRepository<Item,Long> {
    }

    2.注入

    @Autowired
    private ItemRepository itemRepository;

    ● 新增文档

    Item item = new Item(1L, "小米手机7", " 手机",
                 "小米", 3499.00, "http://image.leyou.com/13123.jpg");
    itemRepository.save(item);

    ● 批量新增

      List<Item> list = new ArrayList<>();
      list.add(new Item(2L, "坚果手机R1", " 手机", "锤子", 3699.00, "http://image.leyou.com/123.jpg"));
      list.add(new Item(3L, "华为META10", " 手机", "华为", 4499.00, "http://image.leyou.com/3.jpg"));
      // 接收对象集合,实现批量新增
      itemRepository.saveAll(list);

    四、 基本搜索

    ● 基本查询。