当前位置: 首页 > news >正文

制作网站哪里做程序员用的编程软件

制作网站哪里做,程序员用的编程软件,模板支撑体系搭设规范,最简单的网站更多有关博主写的往期Elasticsearch文章 标题地址【ElasticSearch 集群】Linux安装ElasticSearch集群(图文解说详细版)https://masiyi.blog.csdn.net/article/details/131109454基于SpringBootElasticSearch 的Java底层框架的实现https://masiyi.blog.c…

更多有关博主写的往期Elasticsearch文章

标题地址
【ElasticSearch 集群】Linux安装ElasticSearch集群(图文解说详细版)https://masiyi.blog.csdn.net/article/details/131109454
基于SpringBoot+ElasticSearch 的Java底层框架的实现https://masiyi.blog.csdn.net/article/details/121534307
ElasticSearch对标Mysql,谁能拔得头筹?https://masiyi.blog.csdn.net/article/details/122661822
同事说关键字查询用Mysql,我上去就是一个高压锅,用ElasticSearch不香吗?https://masiyi.blog.csdn.net/article/details/122701654
新年第一天,老板让升级ElasticSearch版本,我说得加钱https://masiyi.blog.csdn.net/article/details/122819455
使用了ElasticSearch之后,公司系统查询速度快了50倍,工资直接翻一倍https://masiyi.blog.csdn.net/article/details/122819455
ElasticSearch实战教程PostMan版(超级详细版)https://masiyi.blog.csdn.net/article/details/123048119
Linux安装ElasticSearch以及Ik分词器(图文解说详细版)https://masiyi.blog.csdn.net/article/details/121509681

文章目录

    • 🐝第一步,创建一个springboot项目
    • 🐝第二步,导入spring-boot-starter-data-elasticsearch依赖
    • 🐝第三步,配置yml文件
    • 🐝第四步,编写es索引对应的实体类
    • 🐝第五步,编写实体类对应的mapper
    • 🐝第六步,使用框架自带的增删改查
      • 🐝增
        • 🐝使用ElasticsearchRestTemplate
        • 🐝使用mapper
        • 🐝设置指定的id
        • 🐝批量保存
      • 🐝删
        • 🐝传入实体类删
        • 🐝传入id删
        • 🐝删除索引里面所有的数据(慎用)
      • 🐝改
        • 🐝实体改
        • 🐝实体改全部
        • 🐝先查再update
        • 🐝直接使用局部更新
      • 🐝查
        • 🐝根据id查
        • 🐝根据id列表查
        • 🐝查询全部数据
        • 🐝排序查-正序
        • 🐝排序查-倒序
        • 🐝分页查
        • 🐝自定义复杂的查询
    • 🐝第七步,使用JPA风格的查询方式
        • 🐝根据age查询
        • 🐝查询所有符合age的数据
        • 🐝查询最top的数据

导语

发现很多公司都是自己导入原生的jar包自己去封装一套Elasticsearch的框架,这样虽然可以自定义业务,但是需要花费很多的时间,其实spring官方有一套springboot的starter,帮助大家快速入手官网的starter,这篇博客也会介绍使用该starter连接Elasticsearch的集群。该starter有点像mybatisplus+Jpa,如果熟悉这两个框架的同学应该很快就会上手。

官网地址:
https://docs.spring.io/spring-data/elasticsearch/docs/4.0.x/reference/html/#preface

本文所有的代码都已经提交到git仓库中,仓库地址:
https://gitee.com/WangFuGui-Ma/spring-boot-elasticSearch

在这里插入图片描述

现在我们开始按照步骤进行spring-boot-starter-data-elasticsearch的使用,本文中使用的spring boot版本为2.7.x 对于的elasticsearch客户端版本为7.17.x

🐝第一步,创建一个springboot项目

在这里插入图片描述

🐝第二步,导入spring-boot-starter-data-elasticsearch依赖

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

其他依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--json--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.76</version></dependency><!--json-->

在这里插入图片描述

🐝第三步,配置yml文件

spring:elasticsearch:uris:- 192.168.75.128:9200- 192.168.75.129:9200- 192.168.75.130:9200
server:port: 8889

uris这里填的是集群的地址,如果你的es是单机版的,直接填一个就行了

🐝第四步,编写es索引对应的实体类

import lombok.Data;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.WriteTypeHint;/*** @Author masiyi* @Date 2023/6/14 13:46* @PackageName:com.masiyi.springbootstarterdataelasticsearch.doman* @ClassName: ElasticTest* @Description: TODO* @Version 1.0*/
@Data
@Document(indexName = "elastic_test",writeTypeHint = WriteTypeHint.FALSE)
public class ElasticTest {private Long id;private String name;private Integer age;private Boolean isMan;
}

注:

  • id这个类型一定要写,否则会报错
  • indexName对应es中的索引
  • writeTypeHint如果为false则不会自动创建索引

🐝第五步,编写实体类对应的mapper

类似mybatis一样,我们需要创建对应的mapper

public interface ElasticTestMapper extends ElasticsearchRepository<ElasticTest,Long> {}

继承ElasticsearchRepository类,第一个泛型添es对应的实体类,第二个泛型添id的类型

🐝第六步,使用框架自带的增删改查

我们这次用单元测试的方法跟大家演示框架的用法

在这里插入图片描述

注入刚刚创建的mapper和框架的ElasticsearchRestTemplate

🐝增

🐝使用ElasticsearchRestTemplate

   @Testvoid save() {ElasticTest elasticTest = new ElasticTest();elasticTest.setName("李四");elasticTest.setAge(23);elasticTest.setIsMan(true);elasticsearchTemplate.save(elasticTest);}

🐝使用mapper

    @Testvoid insert() {ElasticTest elasticTest = new ElasticTest();elasticTest.setName("李四");elasticTest.setAge(23);elasticTest.setIsMan(true);elasticTestMapper.save(elasticTest);}

🐝设置指定的id

   @Testvoid insertId() {ElasticTest elasticTest = new ElasticTest();elasticTest.setName("掉头发的王富贵");elasticTest.setAge(25);elasticTest.setIsMan(true);elasticTest.setId(2434235L);elasticTestMapper.save(elasticTest);}

🐝批量保存

    @Testvoid saveAll() {ElasticTest elasticTest = new ElasticTest();elasticTest.setName("李四");elasticTest.setAge(24);elasticTest.setIsMan(true);elasticTestMapper.saveAll(Arrays.asList(elasticTest));}

🐝删

🐝传入实体类删

    @Testvoid delete() {ElasticTest elasticTest = new ElasticTest();elasticTest.setId(2342342L);elasticTestMapper.delete(elasticTest);}

🐝传入id删

    @Testvoid deleteById() {elasticTestMapper.deleteById(2342342L);}

🐝删除索引里面所有的数据(慎用)

    @Testvoid deleteAll() {elasticTestMapper.deleteAll();}

🐝改

🐝实体改

    @Testvoid update() {ElasticTest elasticTest = new ElasticTest();elasticTest.setName("掉头发的王富贵hh");elasticTest.setId(2434235L);elasticTestMapper.save(elasticTest);}

这里改会把其他的不在实体里面为null的数据清空

在这里插入图片描述

🐝实体改全部

 @Testvoid updateAll() {ElasticTest elasticTest = new ElasticTest();elasticTest.setName("掉头发的王富贵");elasticTest.setAge(24);elasticTest.setIsMan(true);elasticTest.setId(2434234L);elasticTestMapper.save(elasticTest);}

如果我们只需要局部更新,可以使用下面的两种方法

🐝先查再update

    @Testvoid updateNow() {ElasticTest elasticTest = elasticTestMapper.findById(2434234L).get();elasticTest.setName("不掉头发的王富贵");elasticTestMapper.save(elasticTest);}

但是这个方法会消耗性能,所以推荐用下面的方法

🐝直接使用局部更新

    @Testvoid updateNow2() {ElasticTest elasticTest = new ElasticTest();elasticTest.setName("掉头发的王富贵h");Map map = JSONObject.parseObject(JSONObject.toJSONString(elasticTest), Map.class);UpdateQuery updateQuery = UpdateQuery.builder("0ZUv7okBcQy9f7u_tXkH").withDocument(Document.from(map)).build();elasticsearchTemplate.update(updateQuery, IndexCoordinates.of("elastic_test"));}

在这里插入图片描述

🐝查

🐝根据id查

    @Testvoid select() {Optional<ElasticTest> byId = elasticTestMapper.findById(2434234L);byId.ifPresent(System.out::println);}

🐝根据id列表查

  @Testvoid findAllById() {Iterable<ElasticTest> allById = elasticTestMapper.findAllById(Arrays.asList(2434234L));allById.forEach(System.out::println);}

🐝查询全部数据

    @Testvoid findAll() {Iterable<ElasticTest> allById = elasticTestMapper.findAll();allById.forEach(System.out::println);}

🐝排序查-正序

    @Testvoid findAllSort() {Sort age = Sort.by("age").ascending();Iterable<ElasticTest> all = elasticTestMapper.findAll(age);all.forEach(System.out::println);}

🐝排序查-倒序

    @Testvoid findAllSortDE() {Sort age = Sort.by("age").descending();Iterable<ElasticTest> all = elasticTestMapper.findAll(age);all.forEach(System.out::println);}

🐝分页查

    @Testvoid findAllPage() {PageRequest pageRequest = PageRequest.of(0, 10);Page<ElasticTest> all = elasticTestMapper.findAll(pageRequest);all.forEach(System.out::println);System.out.println(JSON.toJSONString(all));}

🐝自定义复杂的查询

 @Testvoid findMyStyle() {TermQueryBuilder termQueryBuilder = new TermQueryBuilder("name.keyword", "掉头发的王富贵");NativeSearchQuery nativeSearchQuery = new NativeSearchQuery(termQueryBuilder);SearchHits<ElasticTest> search = elasticsearchTemplate.search(nativeSearchQuery, ElasticTest.class);List<SearchHit<ElasticTest>> hitList = search.getSearchHits();for (SearchHit<ElasticTest> hit : hitList) {ElasticTest entity = hit.getContent(); // 获取实体对象System.out.println(entity);String index = hit.getIndex(); // 获取索引名System.out.println(index);}}

🐝第七步,使用JPA风格的查询方式

如果会用jpa的同学看到这个可能会非常得熟悉

在这里插入图片描述
可以自定义查询方法find...

🐝根据age查询

    ElasticTest findByAge(Integer age);

🐝查询所有符合age的数据

    List<ElasticTest> findAllByAge(Integer age);

🐝查询最top的数据

    ElasticTest findTopByAge(Integer age);

如果你使用的是idea这种高级的编辑器,你在mapper写方法的时候会自动提示你。

在这里插入图片描述

通过本文的学习,我们探索了在Spring Boot应用中使用Elasticsearch的方法以及如何连接到Elasticsearch集群。Elasticsearch作为一款强大的搜索和分析引擎,在现代应用开发中扮演着至关重要的角色。借助于Spring Boot和spring-boot-starter-data-elasticsearch,我们能够以更加便捷的方式将Elasticsearch集成到我们的项目中,实现高效的数据搜索与分析。

通过配置简单明了的属性,我们能够快速地将Spring Boot应用连接到Elasticsearch集群,实现数据的索引、搜索和分析。借助于Spring Data Elasticsearch提供的强大功能,我们能够轻松地定义实体类、进行CRUD操作,并且利用Elasticsearch的全文搜索和分词等特性,让我们的应用具备更高效的查询和检索能力。

在这里插入图片描述

http://www.yayakq.cn/news/720858/

相关文章:

  • 北京做养生SPA的网站建设wordpress自定义函数
  • 沈阳做网站的公司排行文化馆网站建设的意义
  • 网站要做几个备案网络服务昭通学院
  • 怎么做自己的刷赞网站垂直网站导航是谁做的
  • 太康做网站公司漫画 网站 源码
  • 广东住房城乡建设厅网站泉州鲤城网站建设
  • 怎么做网页制作网站模板网站开发协议模版
  • 名片在哪个网站可以做wordpress it模板下载
  • 济南建网站工作室wordpress页面展示多个文章
  • 怎么做非法彩票网站吗互联网营销师怎么报考
  • 河南网站建设公国内永久crm不需要下载app
  • 无锡网站制作启航搜索引擎关键词推广
  • 艾纳网站建设网络营销与电子商务的区别
  • 一个网站可以做多少地区词徽信小程序是什么
  • 前海网站建设湖北建设工程信息网站
  • wordpress网站扫描工具保利威视 wordpress
  • 手机网站app制作鞍山市住房和城乡建设网站
  • wordpress数据表更换域名网络营销seo是什么
  • 绿色的医疗资讯手机网站wap模板html源码下载网站制作多少钱一年
  • 天水市城市建设投资集团网站女生学广告学后悔死了
  • 2017还有人做网站吗莞城建设小学网站
  • 做展览的网站合肥市建设网官方网站
  • 网站开发的业内人士营销推广软件
  • 商丘网站建设设计多语网站
  • 网站换空间有影响吗python培训学校
  • 电商网站建设方案模板下载wordpress开通支付宝微信
  • 广安做网站公司广西住房及城乡建设厅网站
  • 有没有专门做飞卢小说盗版的网站网站建设html的好处
  • 长春网站制作专业有名的平面设计公司
  • 网站不接入备案泰安网站建设538sw