Windows 安装和使用 ElasticSearch

SpringBoot3 整合 Elasticsearch

1. ElasticSearch

1.1 ES

(1)ES 是一个开源的分布式搜索和分析引擎,专为处理大模型数据而设计,它能够实现近乎实时的数据检索、分析和可视化,广泛用于全文搜索、日志分析和监控(RLK Stack)、数据分析等领域。

(2)核心概念

Index(索引)

类似数据库中的“表”

Document(文档)

类似数据库中的“行”,JSON格式数据

Shard(分片)

索引被分割成多个分片,分片可分布在不同节点上

Replica(副本)

分片的备份

Mapping(映射)

定义文档的字段及类型

1.2 MYSQL 和 ElasticSearch 对比

MYSQL

Database(数据库)

Row(行)

Column(列)

ElasticSearch

Index(索引)

Document(文档)

Fileds(字段)

1.3 ES 数据类型

数据类型

字符串

text

全文搜索(如文章内容、描述),支持分词、模糊匹配,不适合排序和聚合

keyword

精确匹配(如状态码、标签、ID),不分词,适合过滤、排序和聚合

数值

long / integer(整数)

double / float(浮点数)

日期

date

布尔

boolean

true / false

二进制

binary

存储Base64编码的二进制数据(如图片)

对象

object

JSON对象

嵌套

nested

对象数组

地理

geo_point

经纬度坐标

geo_shape

复杂地理形状(如多边形区域)

数组

[ ]

存储同类型多值

2. 下载

ElasticSearch:Download Elasticsearch | Elastic

Kibana可视化平台:Download Kibana Free | Get Started Now | Elastic

3. 启动

3.1 启动ElasticSearch

第一次启动会初始化一个密码,用户名:elastic。

如果忘记密码,使用命令重置密码:elasticsearch-reset-password -u elastic

注意要保存新密码

3.2 启动 Kibana(先修改配置文件,再启动)

4. 正排索引和倒排索引

4.1 正排索引(id 映射 内容)

id

content

100

华为 Mate 60 手机

101

iPhone 16 手机

102

小米汽车

4.2 倒排索引(分词 映射 id)

keyword

id

手机

100,101

华为

100

iPhone

101

汽车

102

5. Index 索引(使用 PostMan 请求)

5.1 新增 goods 索引( PUT )

// number_of_shards: 定义了索引的主分片数量。数据会被分成几个分片(shard)
// number_of_replicas: 定义了每个主分片的副本数量。主分片的备份数
// mappings: 定义了索引中存储的文档的字段及其数据类型{"settings": {"number_of_shards": 1,"number_of_replicas": 1},"mappings": {"properties": {"goods_name": { "type": "text" },"price": { "type": "float" },"created_time": { "type": "date","format": "yyyy-MM-dd HH:mm:ss" }}}
}

5.2 查询 goods 索引( GET )

5.3 删除 goods 索引( DELETE )

6. Document 文档

6.1 新增 Document( POST _doc )

{"goods_name": "西瓜","price": 19.9,"created_time": "2025-03-24 21:00:00"
}

6.2 根据 id 查询 Document( GET _doc )

6.3 根据 id 局部更新 Document( POST _update )

验证局部更新

6.4 根据 id 删除 Document( DELETE _doc )

6.5 查询

6.5.1 查询 goods 所有 Document( GET _search )

6.5.2 条件查询 goods 的 Document 内容( GET _search )

{"query":{"match":{"goods_name": "香蕉"}},"_source": ["price"]
}

6.5.3 分页查询 goods 所有 Document 内容( GET _search )

6.5.4 排序查询 goods 所有 Document 内容( GET _search )( desc:降序,asc:升序 )

{"sort": {"price":{"order": "desc"}}
}

6.5.5 多条件查询 goods 所有 Document 内容( GET _search )

{"query":{"bool":{"must":[{ "match":{ "goods_name":"西瓜" } },{ "match":{ "price":19.9 } }]}}
}

6.5.6 范围查找 goods 所有 Document 内容( GET _search )

6.5.7 全文检索 && 精确匹配 && 高亮显示 ( GET _search )

6.5.8 聚合查询 ( GET _search )

(1)平局值(avg)

(2)求和(sum)

(3)最大值/最小值(max/min)

(4)统计汇总(stats)

7. 分词器

Standard(单字分词)

standard

中,华,人,民,共,和,国,国,歌

IK(中文词库分词)

ik_smart(最少切分)

中华人民共和国,国歌

ik_max_word(最细粒度划分)

中华人民共和国。中华人民,中华,华人,人民...

7.1 下载 IK 中文分词器

Index of: analysis-ik/stable/

7.2 使用 IK 分词器

7.3 自定义分词 (词库没有“敖丙”,所以要自定义分词)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/76970.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matplotlib初探

库引入 import matplotlib.pyplot as pltpyplot.figure 创建新图形或激活现有图形

NVM 多版本Node.js 管理全指南(Windows系统)

🧑 博主简介:CSDN博客专家、全栈领域优质创作者、高级开发工程师、高级信息系统项目管理师、系统架构师,数学与应用数学专业,10年以上多种混合语言开发经验,从事DICOM医学影像开发领域多年,熟悉DICOM协议及…

实验室预约|实验室预约小程序|基于Java+vue微信小程序的实验室预约管理系统设计与实现(源码+数据库+文档)

实验室预约小程序 目录 基于微信小程序的实验室预约管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、微信小程序前台 2、管理员后台 (1)管理员登录 (2)实验室管理 (3)公告信息管理…

SpringBoot底层-数据源自动配置类

SpringBoot默认使用Hikari连接池,当我们想要切换成Druid连接池,底层原理是怎样呢 SpringBoot默认连接池——Hikari 在spring-boot-autoconfiguration包内有一个DataSourceConfiguraion配置类 abstract class DataSourceConfiguration {Configuration(p…

面试算法高频03-递归

认识递归 递归的概念与特性:递归本质类似循环,是通过函数体进行的循环操作。借助电影《盗梦空间》类比,递归如同主角在不同梦境层穿梭,向下进入不同递归层,向上能回到原来一层,每一层环境和周围元素相似&a…

linux Gitkraken 破解

ubuntu 安装 Gitkraken 9.x Pro 版本_gitcracken.git-CSDN博客

设计模式简述(十一)装饰器模式

装饰器模式 描述基本使用使用 描述 装饰器模式是一种功能型模式 用于动态增强对象的功能 这么一说感觉上和代理模式有些类似 抽象装饰器 要实现原有业务接口,并注入原有业务对象 至于对原有业务对象的调用,可以采用private业务对象 实现业务接口方法的…

【NetCore】ControllerBase:ASP.NET Core 中的基石类

ControllerBase:ASP.NET Core 中的基石类 一、什么是 ControllerBase?二、ControllerBase 的主要功能三、ControllerBase 的常用属性四、ControllerBase 的常用方法2. 模型绑定与验证3. 依赖注入五、ControllerBase 与 Controller 的区别六、实际开发中的最佳实践七、总结在 …

DE2-115分秒计数器

一、模块设计 如若不清楚怎么模块化,请看https://blog.csdn.net/szyugly/article/details/146379170?spm1001.2014.3001.5501 1.1顶层模块 module top_counter(input wire CLOCK_50, // 50MHz时钟input wire KEY0, // 暂停/继续按键out…

ubuntu git cola gui

直接的方法, samba, win 里用 tortoiseSVN 需要先在命令行,运行 git 命令,看到操作提示, 按照提示做 然后右键看 git diff 其它的方法 linux下可视化git工具git-cola安装与使用(HTTP方式)_git…

每日一题(小白)回溯篇4

深度优先搜索题:找到最长的路径,计算这样的路径有多少条(使用回溯) 分析题意可以得知,每次向前后左右走一步,直至走完16步就算一条走通路径。要求条件是不能超出4*4的范围,不能重复之前的路径。…

【数据分享】2000—2020年我国250m精度灌溉农田栅格数据(免费获取)

灌溉农田是指通过水利灌溉为农作物提供必要水分,以维持其生长需求的农田类型。灌溉农田占全球农田的20%,占全球粮食产量的40%。但其消耗了60%-70%的淡水和80%-90%的消耗性用水量。中国是世界上灌溉面积最大的农业大国,但中国仅占世界上8%的农…

MySQL-SQL-DML语句、INSER添加数据、UPDATE更新数据、DELETE删除数据

一. DML 1. DML的英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增、删、改操作。 2. 添加数据(INSERT);修改数据(UPDATE);删除数据(DELETE) 二. DML-INSER添加数据 -- DML insert -- 指定字段添加数…

使用SymPy求解矩阵微分方程

引言 在数学、物理、工程等领域,微分方程常常被用来描述系统的变化和动态过程。对于多变量系统或者多方程系统,矩阵微分方程是非常常见的,它可以用来描述如电路、控制系统、振动系统等复杂的动态行为。今天,我们将通过Python 中的 SymPy 库来求解矩阵微分方程,帮助大家轻…

Sentinel实战(五)、系统保护规则、限流后统一处理及sentinel持久化配置

Spring Cloud Alibaba-Sentinel实战(五)、系统保护规则、限流后统一处理及sentinel持久化配置 一、系统保护规则一)、系统规则支持的模式二)、新增系统规则界面三)、demo测试二、限流后统一处理实操demo三、sentinel持久化配一、系统保护规则 系统保护规则是从应用级别的…

【百日精通JAVA | SQL篇 | 第四篇】约束

SQL这一块没什么难度,主要是一个熟练度,稍微上点难度的地方,其实在于查,比较复杂,涉及到很多问题。 指定列插入 使用指定列插入的时候,未被指定的列使用默认值进行存储,默认值为空。 默认值设置…

http协议版本的区别 -- 2和3

目录 http2和http3的区别 传输层协议 QUIC协议 介绍 连接建立与握手 建立安全连接的过程 RTT 建连为什么需要两个过程 原因 解决 QUIC协议的1-RTT 建连 必要性 连接过程 第一次握手(Client Hello) 版本号 key_share 其他 第二次握手 介绍 Server Hello 身…

21 天 Python 计划:MySQL 库相关操作

文章目录 前言一、系统数据库1. information_schema2. performance_schema3. mysql4. test 二、创建数据库1. 语法2. 数据库命名规则 三、数据库相关操作1. 查看数据库2. 选择数据库3. 删除数据库4. 修改数据库 总结 前言 Python是一种强大且易于学习的编程语言。通过这个21天的…

手撕LLM(二):从源码出发,探索LoRA加载、推理全流程

接上回接着说,前面我们通过分析源码,了解了大模型推理的详细流程,包括提示词从输入,到对话模版包装,到tokenID转换,到Embedding词向量转换;通过大模型推理,再将大模型输出进行最后一…

WPS宏开发手册——常见问题

目录 系列文章6、常见问题 系列文章 使用、工程、模块介绍 JSA语法 JSA语法练习题 Excel常用Api Excel实战 常见问题 附录 6、常见问题 6.1、编辑完宏后会自动保存,下次打开文件会提醒是否启用宏,点击启用会自动加载上次编辑的…