SpringBoot整合Spring Data Elasticsearch

1、导入jar包

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

2、配置yml

spring:
  data:
    elasticsearch:
      cluster-name: elasticsearch
      cluster-nodes: 192.168.232.110:9300

3、实体类

@Data
@Document( indexName = "heima3",type = "item", shards = 1, replicas = 0)
@NoArgsConstructor
@AllArgsConstructor
public class Item {
    @Id
    @Field(type = FieldType.Long)
    Long id;
    @Field(type = FieldType.Text,analyzer = "ik_smart")
    String title; //标题
    @Field(type = FieldType.Keyword)
    String category;// 分类
    @Field(type = FieldType.Keyword)
    String brand; // 品牌
    @Field(type = FieldType.Double)
    Double price; // 价格
    @Field(type = FieldType.Keyword,index = false)
    String images; // 图片地址
}

4、创建ItemRepository接口

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

5、客户端测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class EsTest {
    @Autowired
    ElasticsearchTemplate template;
    @Autowired
    private ItemRepository itemRepository;
    //创建索引库,添加映射
    @Test
    public void testCreate(){
        template.createIndex(Item.class);

        template.putMapping(Item.class);

    }
    //添加数据
    @Test
    public void insertIndex(){
        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);
    }
    //查找全部
    @Test
    public void testFind(){
        Iterable<Item> items = itemRepository.findAll();
        for (Item item : items) {
            System.out.println(item);
        }
    }

如果想按照金额的区间来查询,这个时候需要在itemRepository另写一个方法,按照规定的命名来写方法名,spring自动会实现该方法

public interface ItemRepository extends ElasticsearchRepository<Item,Long> {
    List<Item> findByPriceBetween(Double start, Double end);

}
    @Test
    public void testFindBy(){
        Iterable<Item> items = itemRepository.findByPriceBetween(2000d,4000d);
        for (Item item : items) {
            System.out.println(item);
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值