• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

SpringBoot整合Spring Data Elasticsearch的过程详解

springboot 搞代码 4年前 (2022-01-05) 45次浏览 已收录 0个评论

这篇文章主要介绍了SpringBoot整合Spring Data Elasticsearch的过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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

elasticsearch本质也是存储数据,它不支持事物,但是它的速度远比数据库快得多,

可以这样来对比elasticsearch和数据库

  • 索引(indices)——–数据库(databases)
  • 类型(type)————数据表(table)
  • 文档(Document)—————- 行(row)
  • 字段(Field)——————-列(Columns )

整合:

1,在SprinBoot工程中引入jar包

  org.springframework.bootspring-boot-starter-data-elasticsearch

2,配置文件

 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

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

 @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; // 图片地址

4.引入模板ElasticsearchTemplate

   @Autowired private ElasticsearchTemplate elasticsearchTemplate;

5.创建一个索引

 //添加索引 @Test public void addIndex() { elasticsearchTemplate.createIndex(Item.class); }

6.删除索引

 //删除索引 @Test public void delete(){ elasticsearchTemplate.deleteIndex("item"); }

7.新增对象

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

首先定义一个对象的接口

 public interface ItemRepository extends ElasticsearchCrudRepository { }

然后注入ItemRepository

 @Autowired private ItemRepository itemRepository;

新增对象

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

批量新增

 //批量新增 @Test public void insertList(){ List list = new LinkedList(); list.add(new Item(9L,"华为p20","手机","华为",3500.00,"http://image.baidu.com/13123.jpg-600")); list.add(new Item(10L,"华为p30","手机","华为",5450.00,"http://image.baidu.com/13123.jpg-600")); list.add(new Item(11L,"华为p30 pro","手机","华为",6980.00,"http://image.baidu.com/13123.jpg-600")); itemRepository.saveAll(list); }

8.查询

 //根据字段查询所有 @Test public void queryAll(){ //升序,相应降序为dscending Iterable items = this.itemRepository.findAll(Sort.by("price").ascending()); for (Item item : items){ System.out.println(item); } }

9.自定义查询方法

Spring Data 的另一个强大功能,是根据方法名称自动实现功能,你的方法名叫做:findByTitle,那么它就知道你是根据title查询,然后自动帮你完成,无需写实现类。当然,方法名称要符合一定的约定:

上图是截取csdn上博主我要取一个响亮的昵称的图

根据手机名查找手机

 //自定义方法,根据Title查询 @Test public void findByTitle(){ Item item = this.itemRepository.findByTitle("坚果pro"); System.out.println(item); }

区间查询

 //根据区间查询 @Test public void queryByPrice<em style="color:transparent">来源gao.dai.ma.com搞@代*码网</em>Between(){ List list = this.itemRepository.findByPriceBetween(2000.00, 3500.00); for (Item item : list) { System.out.println("item = " + item); } }

模糊查询

 //模糊查询 @Test public void queryLikeTitle(){ List list = this.itemRepository.findByTitleLike("R2"); for (Item item : list){ System.out.println(item); } }

使用自定义方法需要在接口里面申明方法

 public interface ItemRepository extends ElasticsearchCrudRepository { Item findByTitle(String title); List findByPriceBetween(double price1, double price2); List findByTitleLike(String title); }

10.自定义查询

<pre class="br

以上就是SpringBoot整合Spring Data Elasticsearch的过程详解的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:SpringBoot整合Spring Data Elasticsearch的过程详解

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址