【搜索引擎2】实现API方式调用ElasticSearch8接口
1、理解ElasticSearch各名词含义
ElasticSearch对比Mysql
| Mysql数据库 | Elastic Search |
|---|---|
| Database | 7.X版本前有Type,对比数据库中的表,新版取消了 |
| Table | Index |
| Row | Document |
| Column | mapping |
Elasticsearch是使用Java开发的,8.1版本的ES需要JDK17及以上版本;es默认带有JDK,如果安装es环境为java8,则会默认使用自带环境;
索引、文档、映射
索引index
跟我们常说的数据库索引没有任何关系,它其实相当于数据库里面存数据的表;
文档document
对应我们数据库的数据,即每行数据;
映射mappding
对应我们数据库的字段,自己设置的话需要设置字段类型,不设置在插入文档内容的时候es会按照字段内容设置字段类型;
分片、副本
分片shards
数据量特大,没有足够大的硬盘空间来一次性存储,且一次性搜索那么多的数据,响应跟不上,ES提供把数据进行分片存储,这样方便进行拓展和提高吞吐;
副本replicas
分片的拷贝,当主分片不可用的时候,副本就充当主分片进行使用
索引分片的备份,shard和replica一般存储在不同的节点上,用来提高高可靠性
ES默认为一个索引创建1个主分片和1个副本,在创建索引的时候使用settings属性指定,每个分片必须有零到多个副本
注意:索引一旦创建成功,主分片primary shard数量不可以变(只能重建索引),副本数量可以改变
正排索引、倒排索引
-
正排索引 (Forward Index )
- 指将文档的内容按照文档的顺序进行索引,每个文档对应一个索引条目,包含了文档的各个字段的内容
- 正排索引的优势在于可以快速的查找某个文档里包含哪些词项。但是 正排不适用于查找包含某个词项的文档有哪些
倒排索引(Inverted Index)
-
根据关键词构建的索引结构,记录了每个关键词出现在哪些文档或数据记录中,适用于全文搜索和关键词检索的场景
-
它将文档或数据记录划分成关键词的集合,并记录每个关键词所出现的位置和相关联的文档或数据记录的信息
2、默认分词及IK分词区别演示
使用es自带分词器对内容进行分词

使用ik-smart进行分词

使用ik_max_word进行分词

| 分词模式 | 特点 |
| es默认standard | 对中文按照一个一个字进行分词 |
| ik智能分词ik_samrt | 按照中文词组进行分词,不会重复对单个文字进行分词 |
| ik最小颗粒分词ik_max_word | 除了对词组进行分词外,还会对单个文字,及多词组进行分词 |
理解完分词模式后,我们在插入文档的时候是可以测试文档默认使用了哪种分词;在我的测试结果中,集成IK的ES默认使用的是ik_max_word;
3、索引及映射操作
索引常用接口:
| 接口名称 | 请求方式 | 接口地址 | 请请求参数 | 请求结果 |
|---|---|---|---|---|
| 查看所有索引 | GET | /* | 索引列表,没有数据返回{} | |
| 创建索引 | PUT | /index_name | { "settings": { "number_of_shards": 3, "number_of_replicas": 0 }, "mappings": { "properties": { "id": { "type": "keyword" }, "createTime": { "type": "date" }, "name": { "type": "text" } } } } | 请求成功返回 { "acknowledged": true, "shards_acknowledged": true, "index": "file" } |
| 是否存在 | HEAD | /index_name | 200索引存在 404索引不存在 | |
| 获取索引 | GET | /index_name | 索引信息 | |
| 更新索引设置 | PUT | /index_name | { "settings": { "number_of_replicas": 2 } } | |
| 删除索引 | DELETE | /index_name | { "acknowledged": true } |
mapping无法后面进行单独设置,或者插入文档的时候es自动识别进行填入默认类型;
4、文档操作(“/_doc”代替之前版本type,固定写法)
| 接口名称 | 请求方式 | 接口地址 | 请请求参数 | 请求结果 |
|---|---|---|---|---|
| 查询文档 | GET | /index_name/_doc/1 | ||
| 新增文档指定ID | PUT | /index_name/_doc/1 | { "id":5555, "name":"小滴课堂短链平台", "createDate":"20240311" } | |
| 新增文档不指定ID | POST | /index_name/_doc | { "id":5555, "name":"小滴课堂短链平台", "createDate":"20240311" } | |
| 修改文档 | PUT/POST | /index_name/_doc/1 | { "id":5555, "name":"小滴课堂", "createDate":"20240312" } | |
| 删除文档 | DELETE | /index_name/_doc/1 |
文档存储文件的类型为JSON;文档ID与我们参数的id不是同一个参数,文档ID类似于mysql设置了一个自增ID,我们在插入数据的时候可传值,也可不传值;
5、内容搜索
搜索接口:GET /index_name/_search
请求参数:name为我们自己的字段,这里可以根据自己字段进行调整
{"query": {"match": {"name": "听取"}}
}
返回字段解释:
字段解释took字段表示该操作的耗时(单位为毫秒)。timed_out字段表示是否超时。hits字段表示搜到的记录,数组形式。total:返回记录数,本例是1条。max_score:最高的匹配程度,本例是1.0
关于es类型较多,后续单独出一篇文章进行记录
6、参考文章
ElasticSearch8.X入门教程:ElasticSearch8.X入门教程_elasticsearch 8.x 学习-CSDN博客
相关文章:
【搜索引擎2】实现API方式调用ElasticSearch8接口
1、理解ElasticSearch各名词含义 ElasticSearch对比Mysql Mysql数据库Elastic SearchDatabase7.X版本前有Type,对比数据库中的表,新版取消了TableIndexRowDocumentColumnmapping Elasticsearch是使用Java开发的,8.1版本的ES需要JDK17及以上…...
配置小程序的服务器域名
准备工作 拥有一个已注册的域名:确保您已经注册了一个符合国家和地区相关法律法规要求的域名。 完成域名备案(如有必要):根据国家和地区的法律法规,某些情况下可能需要对域名进行备案才能用于互联网服务。 配置 DNS&…...
政安晨:【深度学习神经网络基础】(一)—— 逐本溯源
政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: 政安晨的机器学习笔记 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 与计算机一样的古老历史 神经网络的出现可追溯到20世纪40年…...
技巧 Win10电脑打开SMB协议共享文件,手机端查看
一. 打开 SMB1.0/CIFS文件共享支持 ⏹如下图所示,打开SMB1.0/CIFS文件共享支持 二. 开启网络发现 ⏹开启网络发现,确保共享的文件能在局域网内被发现 三. 共享文件夹到局域网 ⏹根据需要勾选需要共享的文件夹,共享到局域网 四. 共享文件查…...
java实现MP4视频压缩
要在Java中实现MP4视频压缩,您可以使用一些第三方库,比如ffmpeg或Xuggler等。下面是使用ffmpeg库进行MP4视频压缩的示例代码: java import java.io.BufferedReader; import java.io.InputStreamReader; public class MP4Compressor { public static void main(String[] args)…...
云电脑安全性怎么样?企业如何选择安全的云电脑
云电脑在保障企业数字资产安全方面,采取了一系列严谨而全面的措施。随着企业对于数字化转型的深入推进,数字资产的安全问题日益凸显,而云电脑作为一种新兴的办公模式,正是为解决这一问题而生。云电脑安全吗?可以放心使…...
【python】pygame游戏框架
文章目录 pygame常用模块pygame:主模块,包含初始化、退出、时间、事件等函数。pygame.cdrom 访问光驱pygame.cursors 加载光驱pygame.joystick 操作游戏手柄或者类似的东西pygame.mouse:鼠标模块,包含获取、设置、控制等函数。pygame.key 键盘模块pygame.display:显示模块…...
计算机OSI7层协议模型
OSI模型是由国际标准化组织(ISO)制定的一种网络通信的标准体系,旨在确保不同厂商的网络设备能够互联互通。该模型将网络通信划分为七个独立的层次,每一层负责特定的功能。这种分层设计使得网络协议的开发、维护和升级更加容易。 …...
书生·浦语大模型实战营之全链路开源体系
书生浦语大模型实战营之全链路开源体系 为了推动大模型在更多行业落地开花,让开发者们更高效的学习大模型的开发与应用,上海人工智能实验室重磅推出书生浦语大模型实战营,为广大开发者搭建大模型学习和实践开发的平台,两周时间带…...
/.git/config文件目录
git config可以看做是一个配置工具,它允许用户获得和设置与git相关的配置选项,是我们灵活使用git软件的第一步...
MySQL 8.0 新特性之不可见主键
数据库设计通常需要满足一定的范式要求,其中主键更是最基本的要求。不过,数据库管理系统却允许我们创建没有主键的表。这样的表在 MySQL 中会带来查询性能低下、复制延迟甚至无法实现高可用配置等问题。 为此,MySQL 8.0.30 版本引入了一个新…...
kubernetes-networkpolicies网络策略问题
kubernetes-networkpolicies网络策略问题 问题描述 重点重点重点,查看我的博客CKA考题,里面能找到解决方法 1.部署prometheus监控的时候,都部署成功,但是web访问503-504超时 2.添加ingress的时候也是访问不到,其他命…...
wps没保存关闭了恢复数据教程
有时候我们因为电脑问题会忘记保存就关闭wps导致数据丢失,不知道wps没保存关闭了怎么恢复数据,其实数据是无法恢复的。 wps没保存关闭了怎么恢复数据 1、wps没有数据恢复功能,不过可以开启自动备份。 2、我们可以先点击wps左上角的“文件”…...
Android9.0以后不允许HTTP访问的解决方案
背景 自 Android 9.0 起,默认禁止使用 HTTP 进行访问。当尝试使用 HTTP 链接时,将会收到以下错误信息: "Cleartext HTTP traffic to " host " not permitted"为了解决这一问题,下面介绍两种破解方法&…...
nvm安装以后,node -v npm 等命令提示不是内部或外部命令
因为有vue2和vue3项目多种,所以为了适应各类版本node,使用nvm管理多种node版本,但是当我按教程安装nvm以后,nvm安装以后,node -v npm 等命令提示不是内部或外部命令 首先nvm官网网址:https://github.com/coreybutler/…...
SBA架构5G核心网
SBA(Service Based Architecture)架构是一种面向服务的架构,旨在提供更灵活、更可扩展、更容易部署和管理的解决方案。在电信领域,SBA架构被广泛应用于5G核心网和下一代网络的设计中。 在卫星互联网核心网的总体技术要求中&#…...
上位机图像处理和嵌入式模块部署(qmacvisual图像拼接)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 qmacvisual本身提供了图像拼接的功能。功能本身比较有意思的。大家如果拍过毕业照,特别是那种几百人、上千人的合照,应该就…...
关于对postcss安装和使用比较详细
PostCSS是一款强大的CSS工具,它可以自动解析CSS代码,应用一系列的插件,然后输出转换后的CSS。PostCSS本身是一个功能相对简单的工具,但它的强大之处在于其插件生态系统,这些插件提供了各种各样的功能,如自动…...
uniApp使用XR-Frame创建3D场景(4)金属度和粗糙度
上一篇讲解了如何在uniApp中创建xr-frame子组件并创建简单的3D场景。 这一篇我们讲解xr-frame中关于mesh网格材质的金属度和粗糙度的设置。 1.先看源码 <xr-scene render-system"alpha:true" bind:ready"handleReady"> <xr-node visible"{…...
使用itext-core生成PDF
1、添加引用依赖包 <dependency><groupId>com.itextpdf</groupId><artifactId>itext-core</artifactId><version>8.0.3</version><type>pom</type></dependency> 2、上代码 package com.student.demo.pdf;impor…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...
