上海自助建站上海网站建设,深圳网站建设 营销,腾讯企业邮箱登录入口免费版,国内最好的搜索引擎Elasticsearch集成Spring Boot 概述 Spring Data Elasticsearch 介绍一、环境初始化二、实战入门1、定义数据实体类2、定义Dao层3、框架集成-SpringData-集成测试-索引操作4、框架集成-SpringData-集成测试-文档操作5、框架集成-SpringData-集成测试-文档搜索 概述 Spring Data… Elasticsearch集成Spring Boot 概述 Spring Data Elasticsearch 介绍一、环境初始化二、实战入门1、定义数据实体类2、定义Dao层3、框架集成-SpringData-集成测试-索引操作4、框架集成-SpringData-集成测试-文档操作5、框架集成-SpringData-集成测试-文档搜索 概述 Spring Data Elasticsearch 介绍 Spring Data Elasticsearch基于Spring Data API简化 Elasticsearch 操作将原始操作Elasticsearch 的客户端API进行封装。Spring Data为Elasticsearch 项目提供集成搜索引擎。Spring Data Elasticsearch POJO的关键功能区域为中心的模型与Elastichsearch交互文档和轻松地编写一个存储索引库数据访问层简单的来说是类似于Mybatis-Plus操作。 一、环境初始化
1、引入依赖 !-- elasticsearch--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-elasticsearch/artifactId/dependency2、增加配置文件配置
# es搜索elasticsearch:uris: http://localhost:9200#设置有用户和密码可以取消注释
# username: root
# password: 1234二、实战入门
1、定义数据实体类
Data
NoArgsConstructor
AllArgsConstructor
ToString
/**
indexName :索引库名称
shards集群片相关
*/
Document(indexName shopping, shards 3, replicas 1)
public class Product {//必须有 id,这里的 id 是全局唯一的标识等同于 es 中的_idIdprivate Long id;//商品唯一标识/*** type : 字段数据类型* analyzer : 分词器类型* index : 是否索引(默认:true)* Keyword : 短语,不进行分词*/Field(type FieldType.Text, analyzer ik_max_word)private String title;//商品名称Field(type FieldType.Keyword)private String category;//分类名称Field(type FieldType.Double)private Double price;//商品价格Field(type FieldType.Keyword, index false)private String images;//图片地址
}2、定义Dao层
/*** 题目 ES 操作** author a hrefhttps://github.com/xuyuan-upward许苑向上/a*/
public interface ProductDao extends ElasticsearchRepositoryProduct , Long {ListProduct findByUserId(Long userId);
}3、框架集成-SpringData-集成测试-索引操作
RunWith(SpringRunner.class)
SpringBootTest
public class SpringDataESIndexTest {//注入 ElasticsearchRestTemplateAutowiredprivate ElasticsearchRestTemplate elasticsearchRestTemplate;//创建索引并增加映射配置Testpublic void createIndex(){//创建索引系统初始化会自动创建索引System.out.println(创建索引);}Testpublic void deleteIndex(){//创建索引系统初始化会自动创建索引boolean flg elasticsearchRestTemplate.deleteIndex(Product.class);System.out.println(删除索引 flg);}
}4、框架集成-SpringData-集成测试-文档操作
RunWith(SpringRunner.class)
SpringBootTest
public class SpringDataESProductDaoTest {Autowiredprivate ProductDao productDao;/*** 新增*/Testpublic void save(){Product product new Product();product.setId(2L);product.setTitle(华为手机);product.setCategory(手机);product.setPrice(2999.0);product.setImages(http://www.atguigu/hw.jpg);productDao.save(product);}//POSTMAN, GET http://localhost:9200/product/_doc/2//修改Testpublic void update(){Product product new Product();product.setId(2L);product.setTitle(小米 2 手机);product.setCategory(手机);product.setPrice(9999.0);product.setImages(http://www.atguigu/xm.jpg);productDao.save(product);}//POSTMAN, GET http://localhost:9200/product/_doc/2//根据 id 查询Testpublic void findById(){Product product productDao.findById(2L).get();System.out.println(product);}Testpublic void findAll(){IterableProduct products productDao.findAll();for (Product product : products) {System.out.println(product);}}//删除Testpublic void delete(){Product product new Product();product.setId(2L);productDao.delete(product);}//POSTMAN, GET http://localhost:9200/product/_doc/2//批量新增Testpublic void saveAll(){ListProduct productList new ArrayList();for (int i 0; i 10; i) {Product product new Product();product.setId(Long.valueOf(i));product.setTitle([i]小米手机);product.setCategory(手机);product.setPrice(1999.0 i);product.setImages(http://www.atguigu/xm.jpg);productList.add(product);}productDao.saveAll(productList);}//分页查询Testpublic void findByPageable(){//设置排序(排序方式正序还是倒序排序的 id)Sort sort Sort.by(Sort.Direction.DESC,id);int currentPage0;//当前页第一页从 0 开始 1 表示第二页int pageSize 5;//每页显示多少条//设置查询分页PageRequest pageRequest PageRequest.of(currentPage, pageSize,sort);//分页查询PageProduct productPage productDao.findAll(pageRequest);for (Product Product : productPage.getContent()) {System.out.println(Product);}}
}5、框架集成-SpringData-集成测试-文档搜索
RunWith(SpringRunner.class)
SpringBootTest
public class SpringDataESSearchTest {Autowiredprivate ProductDao productDao;/*** term 查询* search(termQueryBuilder) 调用搜索方法参数查询构建器对象*/Testpublic void termQuery(){TermQueryBuilder termQueryBuilder QueryBuilders.termQuery(title, 小米);IterableProduct products productDao.search(termQueryBuilder);for (Product product : products) {System.out.println(product);}}/*** term 查询加分页*/Testpublic void termQueryByPage(){int currentPage 0 ;int pageSize 5;//设置查询分页PageRequest pageRequest PageRequest.of(currentPage, pageSize);TermQueryBuilder termQueryBuilder QueryBuilders.termQuery(title, 小米);IterableProduct products productDao.search(termQueryBuilder,pageRequest);for (Product product : products) {System.out.println(product);}}}