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

51、Spring Boot 详细讲义(八) Spring Boot 与 NoSQL

3、 Elasticsearch 集成

3.1 Elasticsearch 概述

3.1.1 Elasticsearch 的核心概念

Elasticsearch 是一个开源的分布式搜索引擎,主要用于实时数据检索和分析。它的核心功能包括全文检索、结构化查询和分析大规模数据。

  • 分布式搜索引擎
    • Elasticsearch 将数据分布存储在多个节点上,支持水平扩展和高可用性。
    • 支持实时数据获取和高性能的复杂查询。
  • 倒排索引
    • 倒排索引是一种数据结构,用于快速定位满足特定查询条件的文档。
    • 通过倒排索引,Elasticsearch 能够高效地支持全文检索和结构化查询。
  • 核心概念
    • 索引(Index):类似于数据库中的数据库,是存储文档的地方。
    • 文档(Document):以 JSON 格式存储的数据单元,每个文档都有唯一的 ID。
    • 字段(Field):文档中的键值对,表示具体的数据内容。
    • 映射(Mapping):定义字段的数据类型和索引方式,是索引的结构蓝图。
3.1.2 Elasticsearch 的安装与简单使用
  • 安装 Elasticsearch

    1. 下载:从 Elasticsearch 官方网站 下载适合的版本。

    2. 安装:

      • Windows:解压下载的压缩包,运行 bin\elasticsearch.bat 启动服务。

      • Linux:解压压缩包,运行 bin/elasticsearch 启动服务。

      • macOS:使用 Homebrew 安装:

        brew install elasticsearch  
        
    3. 验证安装:

      • 打开浏览器,访问 http://localhost:9200,应该显示 Elasticsearch 的集群信息。
  • 安装 Kibana(可选):

    1. 下载并解压 Kibana。

    2. 启动 Kibana:

      ./bin/kibana  
      
    3. 访问 http://localhost:5601,即可通过 Kibana 进行可视化的数据管理和查询。

  • 简单使用

    # 创建一个索引  
    curl -X PUT "http://localhost:9200/myindex"  # 插入一条文档  
    curl -X POST "http://localhost:9200/myindex/_doc/1" -H "Content-Type: application/json" -d '{"name":"John","age":30}'  # 查询文档  
    curl -X GET "http://localhost:9200/myindex/_doc/1"  
    

3.2 Spring Boot 与 Elasticsearch 集成

3.2.1 项目结构与依赖配置

为了在 Spring Boot 项目中集成 Elasticsearch,需要在项目中添加相关依赖,并配置项目结构。

  • Maven 依赖
    pom.xml 中添加以下依赖:

    <dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-data-elasticsearch</artifactId>  
    </dependency>  
    <dependency>  <groupId>org.elasticsearch</groupId>  <artifactId>elasticsearch</artifactId>  
    </dependency>  
    
  • Gradle 依赖
    build.gradle 中添加:

    dependencies {  implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch'  implementation 'org.elasticsearch:elasticsearch'  
    }  
    
  • 项目结构

    • src/main/java:存放 Java 源文件。
    • src/main/resources:存放配置文件,如 application.properties
    • src/test:存放测试文件。
3.2.2 使用 Spring Data Elasticsearch 实现 CRUD 和搜索功能

Spring Data Elasticsearch 提供了类似于 Spring Data JPA 的 Repository 接口,方便实现 CRUD 和搜索功能。

  • 创建文档模型
    定义一个 Java 类,使用 @Document 注解指定索引名称和文档类型。

    @Document(indexName = "users", type = "_doc")  
    public class User {  @Id  private String id;  @Field(type = FieldType.Text)  private String name;  @Field(type = FieldType.Integer)  private int age;  // Getter 和 Setter 方法  
    }  
    
  • 创建 Elasticsearch Repository 接口
    定义一个 Repository 接口,继承自 ElasticsearchRepository

    public interface UserRepository extends ElasticsearchRepository<User, String> {  
    }  
    
  • 实现 CRUD 操作
    使用 @Service 注解定义一个服务类,实现 CRUD 功能。

    @Service  
    public class UserService {  @Autowired  private UserRepository userRepository;  public void create(User user) {  userRepository.save(user);  }  public List<User> read() {  return userRepository.findAll();  }  public void update(User user) {  userRepository.save(user);  }  public void delete(String id) {  userRepository.deleteById(id);  }  
    }  
    
  • 实现搜索功能
    使用 QueryBuilders 构建查询,实现搜索功能。

    public List<User> searchByName(String name) {  QueryBuilder query = QueryBuilders.matchQuery(

相关文章:

51、Spring Boot 详细讲义(八) Spring Boot 与 NoSQL

3、 Elasticsearch 集成 3.1 Elasticsearch 概述 3.1.1 Elasticsearch 的核心概念 Elasticsearch 是一个开源的分布式搜索引擎,主要用于实时数据检索和分析。它的核心功能包括全文检索、结构化查询和分析大规模数据。 分布式搜索引擎: Elasticsearch 将数据分布存储在多个…...

什么是分库分表?

分库分表是一种数据库的分布式架构设计策略&#xff0c;以下是详细介绍&#xff1a; 概念 • 随着互联网的发展&#xff0c;数据量呈爆炸式增长&#xff0c;单个数据库服务器可能难以应对海量数据的存储和访问压力。分库分表就是将原本庞大的数据库拆分成多个小的数据库&#…...

如何让别人访问到自己本地项目?使用内网穿透工具简单操作下实现公网连接!

本地搭建服务器的系统项目网络地址&#xff0c;在没有公网IP使用的情况下&#xff0c;如何让局域网外别人访问到自己本地网站和应用呢&#xff1f;这里介绍一种通用的内网发布公网访问&#xff0c;且简便操作的内网穿透实现方法。 一、什么是内网穿透&#xff1f; 1. 先了解内…...

第一篇:linux之虚拟环境与centos安装

第一篇&#xff1a;linux之虚拟环境与centos安装 文章目录 第一篇&#xff1a;linux之虚拟环境与centos安装一、vmware安装二、centos安装1、centos虚拟环境安装2、centos操作系统配置3、常见问题解决 一、vmware安装 我们想要运行linux&#xff0c;需要先安装一个虚拟软件&am…...

Redis List 的详细介绍

Redis List 的详细介绍 以下是 Redis List 的详细介绍&#xff0c;从基础命令、内部编码和使用场景三个维度展开&#xff1a; 一、基础命令 Redis List 支持双向操作&#xff08;头尾插入/删除&#xff09;&#xff0c;适用于队列、栈等场景&#xff0c;以下是核心命令分类&a…...

docker占用磁盘100%

1. 立即清理方案 快速清理命令 bash 复制 # 停止Docker服务 sudo systemctl stop docker# 清理所有无用数据&#xff08;包括未使用的镜像、容器、网络和卷&#xff09; sudo docker system prune -a --volumes# 重启Docker sudo systemctl start docker 手动清理overlay2…...

20250417-vue-条件插槽

有时候我们需要根据内容是否被传入了插槽来渲染某些内容。 你可以结合使用 $slot 属性与 v-if 来实现。 在下面的示例中&#xff0c;我们定义了一个卡片组件&#xff0c;它拥有三个条件插槽&#xff1a;header、footer 和 default。当 header、footer 或 default 的内容存在时…...

【Unity】UI点击事件处理器

目录 前言脚本 前言 在开发过程中&#xff0c;经常需要监听UI的点击事件&#xff0c;这里我给大家整理一下&#xff0c;脚本直接挂在需要监听的节点上即可。 脚本 using UnityEngine; using UnityEngine.Events; using UnityEngine.EventSystems;namespace GameLogic {/// &…...

阿里云服务器的docker环境安装nacos--实践

阿里云服务器的docker环境安装nacos–实践 前提先安装mysql数据库&#xff0c;mysql中创建nacos所需的表以下为阿里云服务器docker环境安装&#xff0c;需在安全组开放8848端口 1. 拉取nacos-server镜像 //最新版本nacos docker pull nacos/nacos-server//或者指定nacos版本…...

每日算法-链表(23.合并k个升序链表、25.k个一组翻转链表)

一.合并k个升序链表 1.1题目描述 1.2题解思路 解法一&#xff1a;小根堆 我们可以先定义一个小根堆&#xff0c;将k个指针的头结点如堆&#xff0c;每次取堆顶元素尾插到newhead中&#xff0c;然后再pop()&#xff0c;接着push堆顶原来堆顶元素的下一个节点 重点分析&#…...

数据结构——反射、枚举以及lambda表达式

1. 反射 Java的反射&#xff08;reflection&#xff09;机制是在运⾏时检查、访问和修改类、接⼝、字段和⽅法的机制&#xff1b;这种动态获取信息以及动态调⽤对象⽅法的功能称为java语⾔的反射&#xff08;reflection&#xff09;机制。 用途 1. 框架开发 2. 注解处理 3.…...

深入理解 HTML5 Web SQL 数据库:用法、现状与替代方案

一、引言 在 Web 开发的领域中,客户端存储一直是一个关键的话题。HTML5 带来了多种客户端存储的解决方案,其中 Web SQL 数据库曾经是一个备受关注的选项。尽管如今它已被废弃,但了解其原理、使用方法以及为何被替代,对于 Web 开发者来说仍然具有重要的意义。本文将深入探讨…...

系统架构设计(一):UML与软件架构

什么是系统架构设计&#xff1f; 系统架构设计是对系统高层结构和行为的描述&#xff0c;包括&#xff1a; 系统的各个模块&#xff08;组件&#xff09;模块之间的交互方式数据流动、控制流动技术选型与部署策略 系统架构常见的风格有&#xff1a; 分层架构&#xff08;La…...

极狐GitLab 外部流水线验证功能解读

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 外部流水线验证 (BASIC SELF) 您可以使用外部服务在创建流水线之前进行验证。 极狐GitLab 发送一个 POST 请求到外部服务的…...

MCP和A2A是什么?

MCP和A2A是什么&#xff1f; MCP&#xff08;Model-Connect Protocol&#xff09;和A2A&#xff08;Agent-to-Agent&#xff09;协议逐渐成为行业关注的焦点。这两个协议分别由Anthropic和谷歌推出&#xff0c;旨在提升智能体与外部工具、数据源及API资源的连接效率&#xff0c…...

CNN卷积神经网络

一、什么是卷积神经网络&#xff08;CNN&#xff09; CNN&#xff08;卷积神经网络&#xff09;是一种专门用于处理图像的神经网络&#xff0c;尤其在图像识别任务中表现出色&#xff0c;例如识别手写数字。它通过多层结构逐步提取图像特征&#xff0c;最终输出识别结果。与传…...

生物信息学技能树(Bioinformatics)与学习路径

李升伟 整理 生物信息学是一门跨学科领域&#xff0c;涉及生物学、计算机科学以及统计学等多个方面。以下是关于生物信息学的学习路径及相关技能的详细介绍。 一、基础理论知识 1. 生物学基础知识 需要掌握分子生物学、遗传学、细胞生物学等相关概念。 对基因组结构、蛋白质…...

Obsidian无门槛简明教程

Obsidian简明教程 Markdown基本语法基本码字标题换行段落引用分割线代码块链接带名字的链接超链接插入图片 强调语法加粗斜体删除线高亮 列表有序列表无序列表任务列表 Obsidian核心用法软件基本使用安装仓库文件夹笔记编辑与查看 资源 核心插件双链标签 三方插件Various Compl…...

常用 Git 命令详解

Git 是一个强大的版本控制工具&#xff0c;广泛用于软件开发和团队协作中。掌握 Git 命令可以帮助开发者更高效地管理代码版本和项目进度。本文将介绍一些常用的 Git 命令&#xff0c;并提供示例以帮助你更好地理解和应用这些命令。 目录 常用命令 git clonegit stashgit pul…...

【HDFS入门】HDFS与Hadoop生态的深度集成:与YARN、MapReduce和Hive的协同工作原理

目录 引言 1 HDFS核心架构回顾 2 HDFS与YARN的集成 3 HDFS与MapReduce的协同 4 HDFS与Hive的集成 4.1 Hive架构与HDFS交互 4.2 Hive数据组织 4.3 Hive查询执行流程 5 HDFS在生态系统中的核心作用 6 性能优化实践 7 总结 引言 在大数据领域&#xff0c;Hadoop生态系统…...

多路由器通过三层交换机互相通讯(单臂路由+静态路由+默认路由版),通过三层交换机让pc端相互通讯

多路由器通过三层交换机互相通讯&#xff08;单臂路由静态路由默认路由版&#xff09; 先实现各个小框框里能够互通 哇咔 交换机1&#xff08;二层交换机,可看配置单臂路由的文章) Switch>en Switch#conf t Switch(config)#int f0/1 Switch(config-if)#switchport access…...

电控---CMSIS概览

1. CMSIS库简介 CMSIS&#xff08;Cortex Microcontroller Software Interface Standard&#xff0c;Cortex微控制器软件接口标准&#xff09;是由ARM公司开发的一套标准化软件接口&#xff0c;旨在为基于ARM Cortex-M系列处理器&#xff08;如Cortex-M0/M0/M3/M4/M7/M33等&am…...

2025.04.17【Stacked area】| 生信数据可视化:堆叠区域图深度解析

文章目录 生信数据可视化&#xff1a;堆叠区域图深度解析堆叠面积图简介为什么使用堆叠面积图如何使用R语言创建堆叠面积图安装和加载ggplot2包创建堆叠面积图的基本步骤示例代码 解读堆叠面积图堆叠面积图的局限性实际应用案例示例&#xff1a;基因表达量随时间变化 结论 生信…...

XSS之同源、跨域、内容安全策略

一、什么是同源策略 HTML的同源策略是浏览器的一个重要的安全机制&#xff0c;它用于限制一个源的网页如何与另一个源的资源进行交互&#xff0c;以此来减少夸站脚本攻击(XSS)和跨站请求伪造(CSRF)等安全风险。 同源的定义 若两个URL的协议&#xff08;protocol&#xff09;、…...

十三、系统设计

一、前言 二、架构设计概念 三、架构风格 四、面向服务的架构 五、微服务 六、MDA 七、软件界面设计 八、软件设计的构成 九、结构化设计 十、面向对象设计内容提要 十一、面向对象设计原则 十二、架构模式、设计模式与惯用法...

HTTP 2.0 协议特性详解

1. 使用二进制协议&#xff0c;简化传输的复杂性&#xff0c;提高了效率 2. 支持一个 TCP 链接发起多请求&#xff0c;移除 pipeline HTTP/2 移除了 HTTP/1.1中的管道化&#xff08;pipeline&#xff09;机制&#xff0c;转而采用多路复用&#xff08;Multiplexing&#xff0…...

MySQL数据备份

一&#xff0c;为什么要进行数据备份 备份&#xff1a;能够防止由于机械故障以及人为误操作带来的数据丢失&#xff0c;例如将数据库文件保存在了其它地方。冗余&#xff1a; 数据有多份冗余&#xff0c;但不等备份&#xff0c;只能防止机械故障带来的数据丢失&#xff0c;例如…...

【Ai】CherryStudio 详细使用:本地知识库、MCP服务器

一、CherryStudio 介绍 Cherry Studio 是一款集多模型对话、知识库管理、AI 绘画、翻译等功能于一体的全能 AI 助手平台。 Cherry Studio 高度自定义的设计、强大的扩展能力和友好的用户体验&#xff0c;使其成为专业用户和 AI 爱好者的理想选择。无论是零基础用户还是开发者&…...

STM32F103_HAL库+寄存器学习笔记17 - CAN中断接收 + 接收CAN总线所有报文

导言 如上所示&#xff0c;本实验的目的是使能CAN接收FIFO1的挂号中断&#xff0c;使用CAN过滤器0与CAN接收FIFO1的组合&#xff0c;接收CAN总线上所有的CAN报文。 如上所示&#xff0c;STM32F103有两个3级深度的接收FIFO。外设CAN想要正常接收CAN报文&#xff0c;必须配置接收…...

kafka报错:The Cluster ID doesn‘t match stored clusterId Some in meta.properties

kafka启动报错&#xff1a; ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer) kafka.common.InconsistentClusterIdException: The Cluster ID kVSgfurUQFGGpHMTBqBPiw doesnt match stored clusterId Some(0Qftv9yBTAmf2iDPSl…...

QML 信号与槽

QML 信号与槽 QML 是 Qt 框架中用于构建现代化、流畅用户界面的声明式语言&#xff0c;其信号与槽&#xff08;Signals and Slots&#xff09;机制是实现组件间通信和交互的核心特性。与 C 的信号与槽类似&#xff0c;QML 的信号与槽提供了一种松耦合的方式&#xff0c;允许界…...

数据结构-栈

大家好&#xff0c;今天带来的是关于数据结构初阶中的栈和队列的内容&#xff0c;一起来看看吧&#xff01;&#xff01;&#xff01; 1.栈的概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为…...

Java 开发玩转 MCP:从 Claude 自动化到 Spring AI Alibaba 生态整合

摘要 本文以原理与示例结合的形式讲解 Java 开发者如何基于 Spring AI Alibaba 框架玩转 MCP&#xff0c;主要包含以下内容。 1. 一些 MCP 基础与快速体验&#xff08;熟悉的读者可以跳过此部分&#xff09; 2. 如何将自己开发的 Spring 应用发布为 MCP Server&#xff0c;验…...

CSS核心笔记001

目录 杂七杂八知识点样式优先级风格基本选择器通配符元素类ID 复合选择器交集选择器并集后代-孙子儿子兄弟属性各种属性选择器的应用 伪类动态伪类结构伪类否定伪类目标为类语言伪类UI伪类 伪元素 杂七杂八知识点 样式优先级 行内 > 内部 > 外部风格 紧凑风格基本选择…...

Windows快速切换屏幕/桌面

windows自带的切屏 需要winctrl 小键盘左右键 但是&#xff01; Windows使用还是键盘加鼠标舒服&#xff01; 教程 安装autohotkey 代码 ~LWin & LButton::{SendInput "^#{Left}" ; 发送 Win Ctrl Left (切换到左侧虚拟桌面) } ; 使用花括号包裹命令&a…...

ESP32- 开发笔记- 硬件设计-ESP32-C3基本电路

ESP32的最小电路 1 ESP32固件下载 ESP32 有多种下载(烧录)固件的方式,具体选择取决于开发环境和硬件连接。以下是常见的几种下载方式: 1.1 USB 串口下载(最常用) 适用场景:通过 USB 转串口芯片(如 CP2102、CH340)连接电脑,使用 esptool 或其他工具烧录固件。这里…...

webgl入门实例-09索引缓冲区示例

实现效果 实现代码 <!doctype html> <html lang"en"><head><meta charset"utf-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport"content"widthdevi…...

STM32 串口中断接收方式笔记:HAL_UART_Receive_IT vs __HAL_UART_ENABLE_IT

&#x1f4d8; STM32 串口中断接收方式笔记&#xff1a;HAL_UART_Receive_IT vs __HAL_UART_ENABLE_IT &#x1f9e0; 1. 两者作用简述 函数/宏作用是否配置HAL状态是否调用Rx回调HAL_UART_Receive_IT()启动一次基于中断的串口接收任务✅ 是✅ 是__HAL_UART_ENABLE_IT()手动使…...

ubuntu 向右拖动窗口后消失了、找不到了

这是目前单显示器的设置&#xff0c;因为实际只有1个显示器&#xff0c;之前的设置如下图所示&#xff0c;有2个显示器&#xff0c;一个主显示器&#xff0c;一个23寸的显示器 ubuntu 22.04 系统 今天在操作窗口时&#xff0c;向右一滑&#xff0c;发现这个窗口再也不显示了、找…...

Selenium 获取 Web 页面信息的全指南

Selenium 获取 Web 页面信息的全指南 Selenium 是一个功能强大的自动化测试工具&#xff0c;但它也可以用于 web 页面信息的抓取和分析。本文将详细介绍如何使用 Selenium 来获取网页信息&#xff0c;并涵盖从环境搭建到高级技巧的各个方面。 目录 简介环境搭建Selenium 的基…...

stm32-lm75、SPI

一、lm75--温度传感器 LM75 是一种数字温度传感器和带有 2 线接口的热监视器&#xff08;热看门狗&#xff09;&#xff0c;以下是其详细介绍&#xff1a; 一、核心功能与特点 温度检测与转换 内置带隙温度传感器和 Sigma-Delta 模数转换器&#xff0c;可实现 -55℃ 至 125℃ 温…...

介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用。

Docker 是一种开源的容器化平台&#xff0c;可以帮助开发人员打包、部署和运行应用程序。Docker 的基本概念是利用容器来封装应用程序及其所有依赖项&#xff0c;使其能够在任何环境中快速、可靠地运行。 Docker 的优势包括&#xff1a; 轻量级和灵活性&#xff1a;Docker 容…...

如何判断单片机性能极限?

目录 1、CPU 负载 2、内存使用情况 3、实时性能 4、外设带宽 5、功耗与温度 在嵌入式系统设计中&#xff0c;当系统变得复杂、功能增加时&#xff0c;单片机可能会逐渐逼近其性能极限。及时识别这些极限点对于保证产品质量、稳定性和用户体验至关重要。 当你的嵌入式系统…...

LeetCode 2919 使数组变美的最小增量运算数

动态规划解题&#xff1a;最小操作次数使数组变为美丽数组 问题描述 给定一个下标从0开始、长度为n的整数数组nums和一个整数k。你可以对数组中的任意一个元素进行加1操作&#xff0c;操作次数不限。如果数组中任意长度大于或等于3的子数组的最大值都大于或等于k&#xff0c;…...

5.VTK 相机

文章目录 概念示例 概念 在VTK&#xff08;VisualizationToolkit&#xff09;中&#xff0c;相机&#xff08;vtkCamera&#xff09;用于定义场景的观察视角。以下是关于VTK相机的主要概念和设置方法的总结&#xff1a; 相机位置&#xff1a;通过vtkCamera::SetPosition()方法设…...

基于Flask的网络安全渗透知识库系统架构解析

基于Flask的网络安全渗透知识库系统架构解析 一、系统架构概述 本系统采用经典的三层Flask架构设计&#xff0c;通过模块化的方式实现渗透技术知识库的展示与管理。整体架构包含以下核心组件&#xff1a; 路由控制层&#xff1a;app.py作为入口文件模板展示层&#xff1a;Ji…...

Flutter BigInt 是用于处理任意精度整数的特殊数字类型,专为解决超大整数运算需求而设计

在Flutter/Dart中&#xff0c;BigInt 是用于处理任意精度整数的特殊数字类型&#xff0c;专为解决超大整数运算需求而设计。以下是从原理到实践的全面解析&#xff1a; 一、核心特性 特性说明任意精度突破普通int的64位限制&#xff08;-2^63 ~ 2^63-1&#xff09;&#xff0c…...

绿幕抠图直播软件-蓝松抠图插件--使用相机直播,灯光需要怎么打?

使用SONY相机进行绿幕抠图直播时&#xff0c;灯光布置是关键&#xff0c;直接影响抠图效果和直播画质。以下是详细的灯光方案和注意事项&#xff1a; 一、绿幕灯光布置核心原则 均匀照明&#xff1a;绿幕表面光线需均匀&#xff0c;避免阴影和反光&#xff08;亮度差控制在0.5…...

DeepSeek在数据仓库的10大应用场景

一、智能数据集成与清洗 多源数据整合&#xff1a;DeepSeek能够从多种数据源中提取、转换和加载数据&#xff0c;实现跨系统数据的高效整合。 数据清洗与标准化&#xff1a;通过智能算法自动识别并纠正数据中的错误、不一致性和缺失值&#xff0c;提升数据质量。 二、数据仓…...

Java 工厂设计模式详解:用统一入口打造灵活可扩展的登录系统----掌握 Spring 源码的基础第一步

一、前言 在实际开发中&#xff0c;我们经常面临以下场景&#xff1a; 系统支持多种登录方式&#xff08;用户名密码、管理员登录、OAuth 登录、短信登录等&#xff09; 每种登录方式的认证逻辑不同 我们希望对外提供一个统一的接口调用&#xff0c;而不暴露具体实现 这个…...