总结之全文检索ElasticSearch(三)——Spring Data Elasticsearch使用

Spring Data Elasticsearch提供了ElasticsearchTemplate工具类,实现了POJO与elasticsearch文档之间的映射

在SprinBoot工程中引入jar包
<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
配置文件
spring.data.elasticsearch.cluster-name=elasticsearch //名字必须和elasticsearch.yml里面的cluster.name相同
spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300
spring.data.elasticsearch.repositories.enabled=true

创建实体,并对类和属性进行标注

@Document(indexName = "item",type = "docs", shards = 1, replicas = 0)//标记为文档类型,ndexName:对应索引库名称type:对应在索引库中的类型,shards:分片数量,默认5,replicas:副本数量,默认1
public class Item {
  @Id //主键
  private Long id;
  @Field(type = FieldType.Text, analyzer = "ik_max_word" store = true) //标记为成员变量  FieldType,可以是text、long、short、date、integer等  text:存储数据时候,会自动分词,并生成索引  keyword:存储数据时候,不会分词建立索引  analyzer:分词器名称 store是否索引
  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(index = false, type = FieldType.Keyword)//index:是否索引
  private String images; // 图片地址
引入模板ElasticsearchTemplate
@Autowired
private ElasticsearchTemplate elasticsearchTemplate;
创建一个索引
//添加索引
@Test
public void addIndex() {
  elasticsearchTemplate.createIndex(Item.class);
}
删除索引
//删除索引
@Test
public void delete(){
  elasticsearchTemplate.deleteIndex("item");
}
新增对象

继承Repository提供的一些子接口,就能具备各种基本的CRUD功能,这里继承ElasticsearchCrudRepository

首先定义一个对象的接口

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

然后注入ItemRepository

@Autowired
private ItemRepository itemRepository;

新增对象

//新增一个对象
  @Test
  public void insert(){
    Item item = new Item(2L,"iPhoneEs2","手机","iPhone",2500.00,"http://image.baidu.com/iPhone.jpg");
    //Order order = new Order(20180020,"菜单");
    itemRepository.save(item);
  }

批量新增

//批量新增
  @Test
  public void insertList(){
    List<Item> list = new LinkedList<>();
    list.add(new Item(9L,"华为p10","手机","华为",3500.00,"http://image.baidu.com/13123.jpg"));
    list.add(new Item(10L,"华为p40","手机","华为",5450.00,"http://image.baidu.com/13123.jpg"));
    list.add(new Item(11L,"华为p40 pro","手机","华为",6980.00,"http://image.baidu.com/13123.jpg"));
    itemRepository.saveAll(list);
  }
查询
//根据字段查询所有
  @Test
  public void queryAll(){
    //升序,相应降序为dscending
    Iterable<Item> items = this.itemRepository.findAll(Sort.by("price").ascending());
    for (Item item : items){
      System.out.println(item);
    }
  }

普通jpa查询语法查询

根据Title查询
  @Test
  public void findByTitle(){
    Item item = this.itemRepository.findByTitle("坚果pro");
    System.out.println(item);
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值