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

Elasticsearch最新入门教程

文章目录

  • Elasticsearch最新入门教程
    • 1.Elasticsearch安装
    • 2.Kibana安装
    • 3.Elasticsearch关键概念
    • 4.SpringBoot整合Elasticsearch
      • 4.1 导入Elasticsearch数据
      • 4.2 创建SpringBoot项目
      • 4.3 修改pom.xml文件
      • 4.4 创建es实体类
      • 4.5 创建es的查询接口
    • 5.DSL语句
      • 5.1 无条件查询
      • 5.2 指定返回的数据条数
      • 5.3 指定查询字段
      • 5.4 分页查询
      • 5.5 查询指定ID的数据
      • 5.6 删除索引
      • 5.7 条件查询
    • 参考

Elasticsearch最新入门教程

Elasticsearch 是一个基于 Apache Lucene 构建的分布式搜索和分析引擎、可扩展数据存储和矢量数据库。它针对生产规模工作负载的速度和相关性进行了优化。使用 Elasticsearch 近乎实时地搜索、索引、存储和分析各种形状和大小的数据。Kibana 是 Elasticsearch 的图形用户界面。它是可视化和分析数据以及管理和监控弹性堆栈的强大工具。

踩坑记录(补):建议大家下载7.6.2版本的 ElasticSearch 和 Kibana,兼容 JDK1.8,并且低版本安装和启动的时候不需要进行配置。博主一开始鼓捣了半天最新版的下载,有很多的坑点,最后数据导入的时候,代码逻辑没有问题但是死活导入失败,后面查阅了一些资料才发现是高版本的 ElasticSearch 和 Kibana 不兼容 JDK1.8 版本。

  • Elasticsearch 和 JVM 的版本对应关系:https://www.elastic.co/cn/support/matrix#matrix_jvm
  • Spring Boot,Spring Data Elasticsearch 和 Elasticsearch 版本对应关系:https://docs.spring.io/spring-data/elasticsearch/reference/elasticsearch/versions.html

以后遇到那种奇奇怪怪的问题,代码思路是对的,那么请考虑版本问题!!!

1.Elasticsearch安装

  • 下载 Elasticsearch,并解压。

    image-20250603121856992

  • 双击 bin 目录下的 elasticsearch.bat 文件启动 Elasticsearch 服务。发现有“started”字样就说明启动成功了。

    image-20250603203213302

  • 启动完成后访问 localhost:9200,出现 elasticsearch 的信息则表示安装成功。

    image-20250603203819846

    遇到问题:在浏览器输入 localhost:9200 后,Elasticsearch 报错:received plaintext http traffic on an https channel, closing connection netty4httpchannel{localaddress=/[0:0:0:0:0:0:0:1]:9200, remoteaddress=/[0:0:0:0:0:0:0:1]:52388}

    报错原因:Elasticsearch 在 Windows 下开启了安全认证,虽然 started 成功,但访问http://localhost:9200/失败。

    解决办法:打开 config/ 目录下面的 elasticsearch.yml 配置文件,将下面两处改为 false 即可。

    image-20250603205436395

2.Kibana安装

  • 下载 Kibana,并解压。

    image-20250603215425202

  • 修改 Kibana 的配置文件(config/kibaba.yml),将以下内容取消注释。

    server.port: 5601server.host: "localhost"server.name: "your-hostname"elasticsearch.hosts: ["http://localhost:9200"]i18n.locale: "zh-CN"
    

    image-20250604092022149

  • 双击 bin 目录下的 kibana.bat 文件启动 Kibana。

    image-20250604094018133

  • 启动完成后访问 localhost:5601,出现图形化界面则表示安装成功。

    image-20250604100719332

  • 在 Kibana 里面,我们可以在「导航栏」->「Management」->「开发工具」下,写我们的 DSL。

    image-20250604101125890

3.Elasticsearch关键概念

Elasticsearch 既然是一个数据引擎,那么和 MySQL 就有一定的关系,如下表所示:

MySQLElasticsearch
Database(数据库)Index(索引)
Table(表)Type(类型)
Row(行)Document(文档)
Column(列)Field(字段)
Schema(方案)Mapping(映射)
Index(索引)Everything Indexed by default(所有字段均被索引)
SQL(结构化查询语言)DSL(查询专用语言)

向 Elasticsearch 中存储数据,其实就是向 Elasticsearch 中的 index 下面的 type 中存储 JSON 类型的数据。

4.SpringBoot整合Elasticsearch

4.1 导入Elasticsearch数据

拉取下面的项目,然后根据 README 将数据库 elastic 导入到 ElasticSearch 中。

🔗 项目地址:https://gitee.com/FHTT-Tian/elasticsearch-data-initialization.git

image-20250604225610960

note:需要给 ElasticSearch 配置 ik分词器插件。

下载地址:https://release.infinilabs.com/analysis-ik/stable/

下载后将其解压到 ElasticSearch 的 plugins 目录下。(需要新建一个 ik 文件夹来存放解压后的文件,地址示例:D:\Elasticsearch\elasticsearch-9.0.1\plugins\ik

image-20250604234920915

4.2 创建SpringBoot项目

image-20250604231901889

4.3 修改pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.4.RELEASE</version><relativePath /></parent><groupId>cn.edu.sgu.www</groupId><artifactId>springboot-elasticsearch</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot-elasticsearch</name><description>Spring Boot整合Elastic search案例项目</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.22</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

4.4 创建es实体类

创建 entity 包,然后创建 Song.java。

  • @Document(indexName = "songs")注解指定索引名为 songs。
  • @Field注解配置字段的类型,只有 text 类型的字段会被分词。
  • @Id 注解用于标识实体类中的主键字段。在 Spring Data Elasticsearch 中,它告诉框架哪个字段作为文档的唯一标识符。通常,主键字段用于区分不同的文档,并且该字段值应是唯一的。
package com.example.es.entity;import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;import java.io.Serializable;@Data
@Document(indexName = "songs")
public class Song implements Serializable {private static final long serialVersionUID = 42L;@Id@Field(type= FieldType.Keyword)private String id;/*** 歌曲名*/@Field(type= FieldType.Text, analyzer = "ik_max_word")private String name;/*** 描述信息*/@Field(type= FieldType.Text, analyzer = "ik_max_word")private String note;/*** 歌手*/@Field(type= FieldType.Text, analyzer = "ik_max_word")private String singer;
}

4.5 创建es的查询接口

创建 repository 包,然后创建 SongRepository.java 接口。

创建一个接口继承 ElasticsearchRepository<E, T> 接口,该接口的第一个参数类型为实体类型,二个参数类型是实体类的ID属性的数据类型。

package com.example.es.repository;import com.example.es.entity.Song;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;@Repository
public interface SongRepository extends ElasticsearchRepository<Song, String> {
}

5.DSL语句

DSL的格式:index_name指的是Elasticsearch中的索引名,我们歌曲对应的索引名通过@Document注解指定为了songs

GET /index_name/_search {json请求体数据}

5.1 无条件查询

GET /songs/_search
{"query": {"match_all": {}}
}

无条件查询,默认返回10条数据。hits里是查询结果信息,hits.total.value表示符合查询条件的总记录数,hits.hits表示的是返回的数据,_source里是具体的数据。

image-20250605183501008

5.2 指定返回的数据条数

通过 size 指定需要返回的结果数。

GET /songs/_search
{"query": {"match_all": {}},"size": 20
}

5.3 指定查询字段

_source是一个数组,指定需要返回哪些字段,设置为false则不会返回数据。

GET /songs/_search
{"query": {"match_all": {}},"size": 5, "_source": ["name", "singer", "note"]
}

5.4 分页查询

通过from+size实现分页查询,下面查询了第6-10条记录,相当于mysql中的limit 5, 5(和mysql类似,from默认为0)

GET /songs/_search
{"query": {"match_all": {}},"from": 5,"size": 5
}

5.5 查询指定ID的数据

GET /songs/_doc/20210522155349

5.6 删除索引

DELETE /songs

5.7 条件查询

以下是查询歌曲名中包含“爱”字的歌曲,不指定返回的结果数则默认返回前10条。

GET /songs/_search
{"query": {"match": {"name": "爱"}}
}

image-20250605185839528

🤗🤗🤗

参考

  • Elasticsearch安装、使用,Springboot整合Elasticsearch详细教程

相关文章:

Elasticsearch最新入门教程

文章目录 Elasticsearch最新入门教程1.Elasticsearch安装2.Kibana安装3.Elasticsearch关键概念4.SpringBoot整合Elasticsearch4.1 导入Elasticsearch数据4.2 创建SpringBoot项目4.3 修改pom.xml文件4.4 创建es实体类4.5 创建es的查询接口 5.DSL语句5.1 无条件查询5.2 指定返回的…...

第16节 Node.js 文件系统

Node.js 提供一组类似 UNIX&#xff08;POSIX&#xff09;标准的文件操作API。 Node 导入文件系统模块(fs)语法如下所示&#xff1a; var fs require("fs") 异步和同步 Node.js 文件系统&#xff08;fs 模块&#xff09;模块中的方法均有异步和同步版本&#xff…...

【Linux网络篇】:从HTTP到HTTPS协议---加密原理升级与安全机制的全面解析

✨感谢您阅读本篇文章&#xff0c;文章内容是个人学习笔记的整理&#xff0c;如果哪里有误的话还请您指正噢✨ ✨ 个人主页&#xff1a;余辉zmh–CSDN博客 ✨ 文章所属专栏&#xff1a;Linux篇–CSDN博客 文章目录 HTTPS协议原理一.预备知识1.什么是“加密”2.为什么要“加密”…...

jenkins结合gitlab实现CI

Jenkins结合GitLab实现CI&#xff08;持续集成&#xff09; 持续集成&#xff08;Continuous Integration, CI&#xff09;是一种软件开发实践&#xff0c;开发者在代码提交后&#xff0c;系统会自动进行构建、测试&#xff0c;从而尽早发现问题。Jenkins和GitLab的结合可以高效…...

SQL进阶之旅 Day 17:大数据量查询优化策略

文章标题 【SQL进阶之旅 Day 17】大数据量查询优化策略 文章内容 开篇 欢迎来到"SQL进阶之旅"系列的第17天&#xff01;在前面的16天中&#xff0c;我们从基础的表设计、索引应用到复杂的窗口函数和高级索引策略&#xff0c;逐步深入探讨了SQL的核心技术。今天我们…...

字符串 金额转换

package heima.Test09;import java.util.Scanner;public class Money {public static void main(String[] args) {//1。键盘录入一个金额Scanner sc new Scanner(System.in);//请输入一个数据String result "";int money;while (true) {System.out.println("请…...

浅聊一下,大模型应用架构 | 工程研发的算法修养系列(二)

大模型应用架构基础 AI应用演进概述 人工智能应用的发展经历了多个关键阶段&#xff0c;每个阶段都代表着技术范式的重大转变。 大语言模型基础 大语言模型(LLM)作为现代AI应用的核心组件&#xff0c;具有独特的技术特性和能力边界&#xff0c;理解这些基础对架构设计至关重要。…...

装载机防撞系统:智能守护,筑牢作业现场人员安全防线

在尘土飞扬、机械轰鸣的建筑工地上&#xff0c;装载机是不可或缺的 “大力士”&#xff0c;承担着土方搬运、物料装卸等繁重任务。然而&#xff0c;传统作业模式下&#xff0c;装载机的安全隐患时刻威胁着现场人员的生命安全与工程进度。随着智能化技术的突破&#xff0c;唯创安…...

上门服务小程序订单系统框架设计

一、逻辑分析 上门服务小程序订单系统主要涉及服务展示、用户下单、订单处理、服务人员接单与服务完成反馈等核心流程。 服务展示&#xff1a;不同类型的上门服务&#xff08;如家政、维修等&#xff09;需要在小程序中展示详细信息&#xff0c;包括服务名称、价格、服务内容介…...

11.MySQL事务管理详解

MySQL事务管理详解 文章目录 MySQL事务管理 事务的概念 事务的版本支持 事务的提交方式 事务的相关演示 事务的隔离级别 查看与设置隔离级别 读未提交&#xff08;Read Uncommitted&#xff09; 读提交&#xff08;Read Committed&#xff09; 可重复读&#xff08;Repeatabl…...

前端实现视频/直播预览

有一个需求&#xff1a;后端返回视频的预览地址&#xff0c;不仅要支持这个视频的预览&#xff0c;还需要设置视频封面。 这里有两种情况&#xff1a; 如果是类似.mp4&#xff0c;.mov等格式的视频可以选用原生 video 进行视频展示&#xff0c;并且原生的 video 也支持全屏、…...

React源码阅读-fiber核心构建原理

React源码阅读(2)-fiber核心构建原理 好的&#xff0c;我明白了。您提供的文本主要介绍了 React 源码中 Fiber 核心的构建原理&#xff0c;涵盖了从执行上下文到构建、提交、调度等关键阶段&#xff0c;以及相关的代码实现。 您提出的关联问题也很重要&#xff0c;它们深入探讨…...

视频监控管理平台EasyCVR与V4分析网关对接后告警照片的清理优化方案

一、问题概述​ 在安防监控、设备运维等场景中&#xff0c;用户将视频监控管理平台EasyCVR与V4网关通过http推送方式协同工作时&#xff0c;硬件盒子上传的告警图片持续累积&#xff0c;导致EasyCVR服务器存储空间耗尽&#xff0c;影响系统正常运行与告警功能使用。 二、解决方…...

基于 BGE 模型与 Flask 的智能问答系统开发实践

基于 BGE 模型与 Flask 的智能问答系统开发实践 一、前言 在人工智能快速发展的今天&#xff0c;智能问答系统成为了提升信息检索效率和用户体验的重要工具。本文将详细介绍如何利用 BGE&#xff08;Base General Embedding&#xff09;模型、Faiss 向量检索库以及 Flask 框架…...

机器学习:决策树和剪枝

本文目录&#xff1a; 一、决策树基本知识&#xff08;一&#xff09;概念&#xff08;二&#xff09;决策树建立过程 二、决策树生成&#xff08;一&#xff09;ID3决策树&#xff1a;基于信息增益构建的决策树。&#xff08;二&#xff09;C4.5决策树&#xff08;三&#xff…...

vscode自定义主题语法及流程

vscode c/c 主题 DIY 启用自己的主题(最后步骤) 重启生效 手把手教你制作 在C:\Users\jlh.vscode\extensions下自己创建一个文件夹 里面有两个文件一个文件夹 package.json: {"name":"theme-jlh","displayName":"%displayName%&qu…...

vue中加载Cesium地图(天地图、高德地图)

目录 1、将下载的Cesium包移动至public下 2、首先需要将Cesium.js和widgets.css文件引入到 3、 新建Cesium.js文件&#xff0c;方便在全局使用 4、新建cesium.vue文件&#xff0c;展示三维地图 1、将下载的Cesium包移动至public下 npm install cesium后​​​​​​​ 2、…...

SpringBoot整合RocketMQ与客户端注意事项

SpringBoot整合RocketMQ 引入依赖&#xff08;5.3.0比较稳定&#xff09; <dependencies><dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.3.1</version&…...

Github 2025-06-04 C开源项目日报 Top7

根据Github Trendings的统计,今日(2025-06-04统计)共有7个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量C项目7C++项目1Assembly项目1jq:轻量灵活的命令行JSON处理器 创建周期:4207 天开发语言:C协议类型:OtherStar数量:27698 个Fork数量:1538 …...

大二下期末

一.Numpy&#xff08;Numerical Python&#xff09; Numpy库是Python用于科学计算的基础包&#xff0c;也是大量Python数学和科学计算包的基础。不少数据处理和分析包都是在Numpy的基础上开发的&#xff0c;如后面介绍的Pandas包。 Numpy的核心基础是ndarray&#xff08;N-di…...

LeetCode 热题 100 74. 搜索二维矩阵

LeetCode 热题 100 | 74. 搜索二维矩阵 大家好&#xff0c;今天我们来解决一道经典的算法题——搜索二维矩阵。这道题在 LeetCode 上被标记为中等难度&#xff0c;要求我们在一个满足特定条件的二维矩阵中查找一个目标值。如果目标值在矩阵中&#xff0c;返回 true&#xff1b…...

解决 VSCode 中无法识别 Node.js 的问题

当 VSCode 无法识别 Node.js 时&#xff0c;通常会出现以下症状&#xff1a; 代码提示缺失require 等 Node.js API 被标记为错误调试功能无法正常工作终端无法运行 Node.js 命令 常见原因及解决方案 1. Node.js 未安装或未正确配置 ​​解决方法​​&#xff1a; 确保已安…...

Mysql的卸载与安装

确保卸载干净mysql 不然在进行mysal安装时候会出现不一的页面和问题 1、卸载 在应用页面将查询到的mysql相关应用卸载 2、到c盘下将残留的软件包进行数据删除 3、删除programData下的mysql数据 4、检查系统中的mysql是否存在 cmd中执行 sc deleted mysql80 5、删除注册表中的…...

ES101系列09 | 运维、监控与性能优化

本篇文章主要讲解 ElasticSearch 中 DevOps 与性能优化的内容&#xff0c;包括集群部署最佳实践、容量规划、读写性能优化和缓存、熔断器等。 集群部署最佳实践 在生产环境中建议设置单一角色的节点。 Dedicated master eligible nodes&#xff1a;负责集群状态的管理。使用…...

Java常用的判空方法

文章目录 Java常用的判空方法JDK 自带的判空方法1. 使用 或 ! 运算符2. 使用 equals 方法3. Objects.isNull / Objects.nonNull4. Objects.equals4. JDK8 中的 Optional 第三方工具包1. Apache Commons Lang32. Google Guava3. Lombok 注解4. Vavr&#xff08;函数式风格&…...

Excel处理控件Aspose.Cells教程:使用 C# 在 Excel 中创建组合图表

可视化项目时间线对于有效规划和跟踪至关重要。在本篇教程中&#xff0c;您将学习如何使用 C# 在 Excel 中创建组合图。只需几行代码&#xff0c;即可自动生成动态、美观的组合图。无论您是在构建项目管理工具还是处理内部报告&#xff0c;本指南都将向您展示如何将任务数据转换…...

【多线程初阶】阻塞队列 生产者消费者模型

文章目录 一、阻塞队列二、生产者消费者模型(一)概念(二)生产者消费者的两个重要优势(阻塞队列的运用)1) 解耦合(不一定是两个线程之间,也可以是两个服务器之间)2) 削峰填谷 (三)生产者消费者模型付出的代价 三、标准库中的阻塞队列(一)观察模型的运行效果(二)观察阻塞效果1) 队…...

《100天精通Python——基础篇 2025 第5天:巩固核心知识,选择题实战演练基础语法》

目录 一、踏上Python之旅二、Python输入与输出三、变量与基本数据类型四、运算符五、流程控制 一、踏上Python之旅 1.想要输出 I Love Python,应该使用()函数。 A.printf() B.print() C.println() D.Print() 在Python中想要在屏幕中输出内容&#xff0c;应该使用print()函数…...

机器人夹爪的选型与ROS通讯——机器人抓取系统基础系列(六)

文章目录 前言一、夹爪的选型1.1 任务需求分析1.2 软体夹爪的选型 二、夹爪的ROS通讯2.1 夹爪的通信方式介绍2.2 串口助手测试2.3 ROS通讯节点实现 总结Reference: 前言 本文将介绍夹爪的选型方法和通讯方式。以鞋子这类操作对象为例&#xff0c;将详细阐述了对应的夹爪选型过…...

第二十八章 RTC——实时时钟

第二十八章 RTC——实时时钟​​​​​​​ 目录 第二十八章 RTC——实时时钟 1 RTC实时时钟简介 2 RTC外设框图剖析 3 UNIX时间戳 4 与RTC控制相关的库函数 4.1 等待时钟同步和操作完成 4.2 使能备份域涉及RTC配置 4.3 设置RTC时钟分频 4.4 设置、获取RTC计数器及闹钟 5 实时时…...