java SpringBoot2.7整合Elasticsearch(ES)7 进行文档增删查改

这篇具有很好参考价值的文章主要介绍了java SpringBoot2.7整合Elasticsearch(ES)7 进行文档增删查改。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先 我们在 ES中加一个 books 索引 且带有IK分词器的索引
springboot2.7.16集成es,jenkins,es,spring boot
首先 pom.xml导入依赖

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

application配置文件中编写如下配置
spring.elasticsearch.hosts: 172.16.5.10:9200
我这里是用的yml格式的

spring:
  elasticsearch:
    hosts: http://localhost:9200

告诉它指向 我们本地的 9200服务

然后 我们在启动类同目录下 创建一个叫 domain的包 放属性类
然后在这个包下创建一个叫 books的类
参考代码如下

package com.example.webdom.domain;

import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.stereotype.Component;

@Component
@Document(indexName = "books")
public class books {
    private String id;
    private String type;
    private String name;
    private String describe;

    public String getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getType() {
        return type;
    }

    public String getDescribe() {
        return describe;
    }

    public void setId(String id) {
        this.id = id;
    }

    public void setType(String type) {
        this.type = type;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setDescribe(String describe) {
        this.describe = describe;
    }

    @Override
    public String toString() {
        return "books{" +
                "id='" + id + '\'' +
                ", type='" + type + '\'' +
                ", name='" + name + '\'' +
                ", description='" + describe + '\'' +
                '}';
    }
}

springboot2.7.16集成es,jenkins,es,spring boot
这里 我们就定义了几个属性 声明get set函数 然后 为了不免错误 我们id直接给了个字符串类型
重写了toString 让大家能够更直观的看到属性
然后 Document 的indexName 告诉程序 我们要用的是哪一个索引 这里我们给了个 books 表示操作books 索引

然后 我们创建一个Mapper接口 这里 我们直接就叫 BooksMapper
springboot2.7.16集成es,jenkins,es,spring boot
接口代码如下

package com.example.webdom.service;

import com.example.webdom.domain.books;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface BoooksMaaper extends ElasticsearchRepository<books,String> {
}

它需要继承 ElasticsearchRepository 操作ES的一个接口 然后通过 Repository 将它加到spring容器中

然后 我们在启动类同目录下的 config 包 没有就建一个 下面创建一个类 叫 ESClientConfig 名字无所谓
然后 编写代码如下

package com.example.webdom.config;

import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;

import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClientBuilder;

@Configuration
public class ESClientConfig {

    @Autowired
    private Environment environment;

    @Bean
    public RestHighLevelClient elasticsearchClient() {
        String elasticsearchHosts = environment.getProperty("spring.elasticsearch.hosts");
        RestClientBuilder builder = RestClient.builder(HttpHost.create(elasticsearchHosts));
        // 设置其他配置,如认证信息、连接超时等
        RestHighLevelClient client = new RestHighLevelClient(builder);
        return client;
    }
}

springboot2.7.16集成es,jenkins,es,spring boot
然后 我们在测试类 中将这个接口条件装配进来
springboot2.7.16集成es,jenkins,es,spring boot
测试类代码编写如下

package com.example.webdom;

import com.example.webdom.domain.books;
import com.example.webdom.service.BoooksMaaper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class WebDomApplicationTests {

    @Autowired
    private BoooksMaaper BoooksMaaper;

    @Test
    void set() {
        books bookdai = new books();
        bookdai.setId("1");
        bookdai.setType("爱猫当的自我修改样");
        bookdai.setName("爱护猫猫");
        bookdai.setDescribe("帮助所有爱猫当快速了解猫猫");
        books book = BoooksMaaper.save(bookdai);
        System.out.println(book);
    }
}

这里 我们条件装配了自己写的接口 BoooksMaaper
然后 books实体类 new出来 然后 用set方法给每一个字段赋值
最后调用 save 添加方法 它有一个返回值 就是我们的属性类实体对象

我们右键运行
springboot2.7.16集成es,jenkins,es,spring boot
此时 我们就运行成功了 然后 可以看到 save 返回的这个对象 就是我们添加进去的东西了
springboot2.7.16集成es,jenkins,es,spring boot
然后 我们通过请求查询一下 books索引下面的文档
http://localhost:9200/books/_search get
就会看到 这里确实是进来了
springboot2.7.16集成es,jenkins,es,spring boot
然后呢 这个东西的修改比较有意思
我们还是这样一段代码

books bookdai = new books();
bookdai.setId("1");
bookdai.setType("vue");
bookdai.setName("vue基础到进阶");
bookdai.setDescribe("测试vue内容修改");
books book = BoooksMaaper.save(bookdai);
System.out.println(book);

有些人可能已经蒙了 save不是添加吗?
这里的设定非常有趣呀 save 你的id如果有 它会覆盖 如果没有 就是添加
我们的id 1是已经存在的 所以 它会将我们前面添加那条id为1的数据覆盖掉 就是修改功能了

运行之后 控制台输出一切正常
springboot2.7.16集成es,jenkins,es,spring boot
然后 我们来查一下
会发现 确实是实现了一个修改的效果
springboot2.7.16集成es,jenkins,es,spring boot
然后 我们来看 ES最有特殊的查询
其实ES主要的价值就在于分词的一个查询

首先是查询全部 findAll
我们这样写

Iterable<books> all = BoooksMaaper.findAll();
for (books book : all){
   System.out.println("book = " +book);
}

调用 findAll 返回一个 泛型为我们实体类的Iterable接口集合
然后 for遍历这个集合 输出每一次结果

运行代码 因为我们总共就一条数据 所以输出的内容就一条 findAll就是查询全部
springboot2.7.16集成es,jenkins,es,spring boot
然后 按照id查询 findById

Optional<books> byId = BoooksMaaper.findById("1");
System.out.println(byId);

我们查询id为1的内容 并输出
右键运行代码
springboot2.7.16集成es,jenkins,es,spring boot
这里 也是顺利查出来了
springboot2.7.16集成es,jenkins,es,spring boot
然后 他有一个比较特殊函数 感觉不是很实用findAllById
它支持传入list数组
可以传给它多个id 然后带出多条数据

ArrayList<String> ids = new ArrayList<>();
ids.add("1");
ids.add("2");
ids.add("3");
ids.add("4");
Iterable<books> byId = BoooksMaaper.findAllById(ids);

查询 id 1 2 3 4的数据 然后形成一个 实体类泛型的 Iterable集合

然后 我们来说自定义的查询方法
我们 可以在自己写的 BoooksMaaper 接口中写一个这样的函数

//自定义 根据name查询
List<books> findByName(String name);

springboot2.7.16集成es,jenkins,es,spring boot
这里需要注意 findBy 后面 跟自己要条件查询的字段名 首字母大写 因为如果你不这样 它是找不到你要查哪个字段的

然后 我们测试类来调用这个函数

List<books> byId = BoooksMaaper.findByName("vue");
System.out.println(byId);

springboot2.7.16集成es,jenkins,es,spring boot
运行代码 这里也顺利通过 vue 模糊查询到了
springboot2.7.16集成es,jenkins,es,spring boot
最后删除方法
我们就看个根据id删除吧 deleteById
没有返回值
我们直接写

BoooksMaaper.deleteById("1");

右键运行代码
springboot2.7.16集成es,jenkins,es,spring boot
运行状态是OK的 但是 看不出有没有成功
我们请求查询一下索引下的文档
springboot2.7.16集成es,jenkins,es,spring boot
很明显 已经删掉了文章来源地址https://www.toymoban.com/news/detail-825313.html

到了这里,关于java SpringBoot2.7整合Elasticsearch(ES)7 进行文档增删查改的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【SpringBoot】整合Elasticsearch 操作索引及文档

    官网操作文档:Elasticsearch Clients | Elastic                踩坑太多了。。。这里表明一下Spring Boot2.4以上版本可能会出现问题,所以我降到了2.2.1.RELEASE。对于现在2023年6月而言,Es版本已经到了8.8,而SpringBoot版本已经到了3.x版本。如果是高版本的Boot在配置类的时候会发现

    2024年02月09日
    浏览(44)
  • springboot整合es进行搜索

    Elasticsearch 的官方地址:https://www.elastic.co/cn/ 这里选择下载 7.8.0 版本 下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch Elasticsearch 分为 Linux 和 Windows 版本,这里我们只是做测试,因此下载 windows 版本即可。 Windows 版的 Elasticsearch 的安装很简单,解压即安装完毕,解

    2024年02月08日
    浏览(31)
  • ElasticSearch系列 - SpringBoot整合ES:ElasticSearch分析器

    1. ElasticSearch match 文本搜索的过程? Elasticsearch 的 match 查询是一种基于文本匹配的查询方式,它的搜索过程如下: ① 将查询字符串分词:Elasticsearch 会将查询字符串分成一个个词项(term),并去除停用词(如“的”、“是”等常用词汇)和标点符号等无意义的字符。 ② 构建

    2023年04月18日
    浏览(113)
  • 【开发篇】九、SpringBoot整合ES(ElasticSearch)

    整合思路都一样,先起步依赖或普通依赖,再配置,再封装的操作对象。先引入依赖: application.yaml配置: 在需要的地方注入客户端操作对象: 注意 ,与以往不同的是,SpringBoot平台并没有跟随ES的更新速度进行同步更新,ES提供了 High Level Client 操作ES,导入坐标: 不用加配

    2024年02月04日
    浏览(31)
  • springboot整合redis,MongoDB,Elasticsearch(ES)

    目录  springboot整合redis 连接Redis 字符串操作 哈希表操作 列表操作 集合操作 有序集合操作 lettcus与jedis的区别  springboot整合MongoDB 新增数据 查询数据 更新数据 删除数据  springboot整合Elasticsearch(ES) 创建ElasticsearchRepository 创建实体类 增删改查 搜索 Spring Boot整合Redis,需要使

    2024年02月05日
    浏览(31)
  • ElasticSearch系列 - SpringBoot整合ES:分析器

    1. ElasticSearch match 文本搜索的过程? Elasticsearch 的 match 查询是一种基于文本匹配的查询方式,它的搜索过程如下: ① 将查询字符串分词:Elasticsearch 会将查询字符串分成一个个词项(term),并去除停用词(如“的”、“是”等常用词汇)和标点符号等无意义的字符。 ② 构建

    2024年02月06日
    浏览(48)
  • SpringBoot 整合 ES 进行各种高级查询搜索

    上一章:《ElasticSearch集群的搭建》 如果你还未安装es的相关信息,请先移步至:《ElasticSearch安装》进行安装 如果您的SpringBoot项目还未整合es,请移步至:《SpringBoot整合ElasticSearch实现模糊查询,批量CRUD,排序,分页,高亮》 同时本文的操作中涉及到ElasticSearchRepository和Ela

    2023年04月15日
    浏览(38)
  • ElasticSearch序列 - SpringBoot整合ES:范围查询 range

    01. ElasticSearch range查询是什么? Elasticsearch 中的 range 查询可以用于查询某个字段在一定范围内的文档。 range 查询可同时提供包含和不包含这两种范围表达式,可供组合的选项如下: gt : 大于(greater than) lt : 小于(less than) gte : = 大于或等于(greater than or equal to) lte : = 小于

    2024年02月09日
    浏览(32)
  • 【Elasticsearch】SpringBoot整合ES实现搜索功能 | 高亮显示

    先看代码: controller: serviceImpl: 小结 : 1、添加ES场景启动器 2、yaml配置ES 3、准备需要用到的变量 注:还有一个注入的RestHighLevelClient 结构如下: 具体调用的方法以及设置页码等参看代码。 加断点查看对应searchResponse数据结构: HighlightFields的数据结构: 对照kinaba结果: 3、根

    2024年02月11日
    浏览(34)
  • Springboot 整合 Elasticsearch(五):使用RestHighLevelClient操作ES ②

    📁 前情提要: Springboot 整合 Elasticsearch(三):使用RestHighLevelClient操作ES ① 目录  一、Springboot 整合 Elasticsearch 1、RestHighLevelClient API介绍 1.1、全查询 分页 排序 1.2、单条件查询 1.2.1、termQuery 1.2.2、matchQuery 1.2.3、短语检索 1.3、组合查询 1.4、范围查询 1.5、模糊查询 1.6、分组

    2024年04月11日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包