SpringBoot整合Spring Data Elasticsearch
2020-12-13 14:11
标签:查询条件 品牌 art double extend 手机 blog order lan Spring Data Elasticsearch提供了ElasticsearchTemplate工具类,实现了POJO与elasticsearch文档之间的映射 elasticsearch本质也是存储数据,它不支持事物,但是它的速度远比数据库快得多, 可以这样来对比elasticsearch和数据库 整合: 1,在SprinBoot工程中引入jar包 2,配置文件 3,创建实体,并对类和属性进行标注 4.引入模板ElasticsearchTemplate 5.创建一个索引 6.删除索引 7.新增对象 继承Repository提供的一些子接口,就能具备各种基本的CRUD功能,这里继承ElasticsearchCrudRepository 首先定义一个对象的接口 然后注入ItemRepository 新增对象 批量新增 8.查询 9.自定义查询方法 Spring Data 的另一个强大功能,是根据方法名称自动实现功能,你的方法名叫做:findByTitle,那么它就知道你是根据title查询,然后自动帮你完成,无需写实现类。当然,方法名称要符合一定的约定: 上图是截取csdn上博主我要取一个响亮的昵称的图 根据手机名查找手机 区间查询 模糊查询 使用自定义方法需要在接口里面申明方法 10.自定义查询 分页查询 还有很多,就不意义列举 在elasticsearch-head上查看数据 关于安装elasticsearch-head,参考:https://www.cnblogs.com/xuwenjin/p/8792919.html, Spring Data Elasticsearch文档:https://docs.spring.io/spring-data/elasticsearch/docs/3.1.10.RELEASE/reference/html/ SpringBoot整合Spring Data Elasticsearch 标签:查询条件 品牌 art double extend 手机 blog order lan 原文地址:https://www.cnblogs.com/steakliu/p/11553199.html索引(indices)--------数据库(databases)
类型(type)------------数据表(table)
文档(Document)---------------- 行(row)
字段(Field)-------------------列(Columns )
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") //标记为成员变量
FieldType,可以是text、long、short、date、integer等
text:存储数据时候,会自动分词,并生成索引
keyword:存储数据时候,不会分词建立索引
analyzer:分词器名称
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; // 图片地址 @Autowired
private ElasticsearchTemplate elasticsearchTemplate;
//添加索引
@Test
public void addIndex() {
elasticsearchTemplate.createIndex(Item.class);
}
//删除索引
@Test
public void delete(){
elasticsearchTemplate.deleteIndex("item");
}
public interface ItemRepository extends ElasticsearchCrudRepository
@Autowired
private ItemRepository itemRepository;
//新增一个对象
@Test
public void insert(){
Item item = new Item(2L,"坚果R1","手机","锤子",2500.00,"http://image.baidu.com/13123.jpg");
//Order order = new Order(20180020,"菜单");
itemRepository.save(item);
}
//批量新增
@Test
public void insertList(){
List
//根据字段查询所有
@Test
public void queryAll(){
//升序,相应降序为dscending
Iterable
//自定义方法,根据Title查询
@Test
public void findByTitle(){
Item item = this.itemRepository.findByTitle("坚果pro");
System.out.println(item);
}
//根据区间查询
@Test
public void queryByPriceBetween(){
List
//模糊查询
@Test
public void queryLikeTitle(){
List
public interface ItemRepository extends ElasticsearchCrudRepository
//自定义查询,查询数目等
@Test
public void matchQuery(){
// 构建查询条件
NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();
// 添加基本分词查询
queryBuilder.withQuery(QueryBuilders.matchQuery("title","坚果"));
//获取结果
Page
关键的是NativeSearchQueryBuilder这个类 //分页查询
@Test
public void queryByPage(){
NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();
nativeSearchQueryBuilder.withQuery(QueryBuilders.termQuery("category","手机"));
int page = 0;
int size = 2;
nativeSearchQueryBuilder.withPageable(PageRequest.of(page,size));
Page
文章标题:SpringBoot整合Spring Data Elasticsearch
文章链接:http://soscw.com/essay/33792.html