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

【搜索引擎2】实现API方式调用ElasticSearch8接口

1、理解ElasticSearch各名词含义

ElasticSearch对比Mysql

Mysql数据库Elastic Search
Database7.X版本前有Type,对比数据库中的表,新版取消了
TableIndex
RowDocument
Columnmapping

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
新增文档指定IDPUT/index_name/_doc/1{
  "id":5555,
  "name":"小滴课堂短链平台",
  "createDate":"20240311"
}
新增文档不指定IDPOST/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…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

SQL Server 触发器调用存储过程实现发送 HTTP 请求

文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...

Python竞赛环境搭建全攻略

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型&#xff08;算法、数据分析、机器学习等&#xff09;不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...