尚硅谷ES基础 - RESTful JSON基本概念倒排索引HTTP

RESTful & JSON

REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。 Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答,这十分适合云计算之类的环境。客户端可以缓存数据以改进性能。

在服务器端,应用程序状态和功能可以分为各种资源。资源是一个有趣的概念实体,它向客户端公开。资源的例子有:应用程序对象、数据库记录、算法等等。每个资源都使用 URI(Universal Resource Identifier) 得到一个唯一的地址。所有资源都共享统一的接口,以便在客户端和服务器之间传输状态。使用的是标准的 HTTP 方法,比如 GET、 PUT、 POST 和DELETE。

在 REST 样式的 Web 服务中,每个资源都有一个地址。资源本身都是方法调用的目
标,方法列表对所有资源都是一样的。这些方法都是标准方法,包括 HTTP GET、 POST、PUT、 DELETE,还可能包括 HEAD 和 OPTIONS。简单的理解就是,如果想要访问互联网上的资源,就必须向资源所在的服务器发出请求,请求体中必须包含资源的网络路径, 以及对资源进行的操作(增删改查)。

REST 样式的 Web 服务若有返回结果,大多数以JSON字符串形式返回。
**JSON格式的好处:**JSON便于序列化和反序列化

ES的基本概念

在这里插入图片描述

倒排索引的概念及好处

概念
倒排索引创建keyword与id的关系,记录了包含某keyword的所有文档的编号、词频等信息。这让我们能够在O(1)的时间内判断某个文档是否包含某个词,而且还可以基于词频、相关度等统计信息进行搜索结果排序,快速对全文内容进行检索
优势
高效的文本搜索:由于倒排索引通过单词快速定位到含有该单词的文档,所以搜索效率非常高
支持分词:分词可以将连续字母或数字序列划分为有意义的词组或单个词汇,这些分词信息可以被用于构建索引,从而实现更加精确的搜索结果。
支持高级搜索功能:倒排索引可以使用词间关系、词条权重等信息对搜索结果进行精确匹配、布尔运算和相关度排序

索引的创建&查询 & 删除

创建

建索引就等同于创建数据库,向 ES 服务器发 PUT 请求 : http://127.0.0.1:9200/shopping shopping为索引名

查询

GET请求查询索引信息
查看所有索引 :发 GET 请求 : http://127.0.0.1:9200/_cat/indices?v
请求路径中的_cat 表示查看的意思, indices 表示索引,所以整体含义就是查看当前 ES服务器中的所有索引

删除

发 DELETE 请求 : http://127.0.0.1:9200/shopping

文档-创建(Put & Post)

向 ES 服务器发 POST 请求 : http://127.0.0.1:9200/shopping/_doc 请求体JSON内容为:
_doc索引中添加文档
此处发送请求的方式必须为 POST,不能是 PUT,否则会发生错误 PUT要求幂等性而POST不要求
如果想要自定义唯一性标识,需要在创建时指定: http://127.0.0.1:9200/shopping/_doc/1

{"title":"小米手机","category":"小米","images":"http://www.gulixueyuan.com/xm.jpg","price":3999.00
}

查询-主键查询 & 全查询

主键查询

向 ES 服务器发 GET 请求 : http://127.0.0.1:9200/shopping/_doc/1

全查询

查看索引下所有数据,向 ES 服务器发 GET 请求 : http://127.0.0.1:9200/shopping/_search

全量修改 & 局部修改 & 删除

全量修改

和新增文档一样,输入相同的 URL 地址请求,如果请求体变化,会将原有的数据内容覆盖,向 ES 服务器发 PUT 请求 : http://127.0.0.1:9200/shopping/_doc/1

局部修改

向 ES 服务器发 POST 请求 : http://127.0.0.1:9200/shopping/_update/1
请求体

"doc": {"title":"小米手机","category":"小米"}
删除

删除一个文档不会立即从磁盘上移除,它只是被标记成已删除(逻辑删除)
向 ES 服务器发 DELETE 请求 : http://127.0.0.1:9200/shopping/_doc/1

条件查询 & 分页查询 & 查询排序

条件查询

方式1:该方式如果条件为中文可能会导致乱码
查找category为小米的文档

http://127.0.0.1:9200/shopping/_search?q=category:小米

方式2:请求体方式

{"query":{"match":{"category":"小米"}}
}

查找所有内容

{"query":{"match_all":{}}
}
分页查询

向 ES 服务器发 GET请求 : http://127.0.0.1:9200/shopping/_search

{"query":{"match_all":{}},"from":0,#(页码-1*每页条数"size":2"_source":["title"]
}
查询排序
{"query":{"match_all":{}},"sort":{"price":{"order":"desc"}}
}

多条件查询 & 范围查询

多条件查询

bool表示条件
must表示多条件同时成立,should表示或者

{"query":{"bool":{"must":[{"match":{"category":"小米"}},{"match":{"price":3999.00}}]}}
}
范围查询

使用filter操作

{"query":{"bool":{"should":[{"match":{"category":"小米"}},{"match":{"category":"华为"}}],"filter":{"range":{"price":{"gt":2000}}}}}
}

全文检索 & 完全匹配 & 高亮查询

全文检索

将检索进行分词,不用完全匹配
{
“query”:{
“match”:{
“category” : “小华”
}
}
}

完全匹配
{"query":{"match_phrase":{"category" : "为"}}
}
高亮查询
{"query":{"match_phrase":{"category" : "为"}},"highlight":{"fields":{"category":{}//<----高亮这字段}}
}

聚合查询

{"aggs":{//聚合操作"price_group":{//名称,随意起名"terms":{//分组"field":"price"//分组字段}}}
}

若不想要不附带原始数据的结果

{"aggs":{"price_group":{"terms":{"field":"price"}}},"size":0
}

对所有手机价格求平均值

{"aggs":{"price_avg":{//名称,随意起名"avg":{//求平均"field":"price"}}},"size":0
}

映射关系

定义字段的约束信息

PUT http://127.0.0.1:9200/user/_mapping{"properties": {"name":{"type": "text",//可以分词"index": true},"sex":{"type": "keyword",//不可分词 需完整匹配"index": true},"tel":{"type": "keyword","index": false//没有被索引 不支持查询}}
}

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

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

相关文章

CSS3盒子模型

盒子模型&#xff08;Box Modle&#xff09;可以用来对元素进行布局&#xff0c;包括内边距&#xff0c;边框&#xff0c;外边距&#xff0c;和实际内容部分 盒子模型分为两种: 第一种是 W3C 标准的盒子模型&#xff08;标准盒模型&#xff09; 第二种 IE 标准的盒子模型&am…

爬虫入门一

文章目录 一、什么是爬虫&#xff1f;二、爬虫基本流程三、requests模块介绍四、requests模块发送Get请求五、Get请求携带参数六、携带请求头七、发送post请求八、携带cookie方式一&#xff1a;放在请求头中方式二&#xff1a;放在cookie参数中 九、post请求携带参数十、模拟登…

C++进阶(一) 继承

一、继承的概念及定义 1.1继承的概念 继承(inheritance)机制是面向对象程序设计 使代码可以复用的最重要的手段&#xff0c;它允许程序员在 保持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称 派生类。继承呈现了面向对象 程序设计…

如何在Excel中冻结行或列标题?这里提供两种方法

随着数据的增长&#xff0c;许多Excel工作表可能会变得很大&#xff0c;因此冻结行和列标题或冻结窗格非常有用&#xff0c;以便在滚动工作表时将标题锁定到位。在Excel中&#xff0c;可以冻结行标题和列标题&#xff0c;也可以只冻结一个。这不会影响将要打印的单元格。列标题…

Sora 技术实现

Sora 技术实现 Sora 的发布宛如一枚核弹&#xff0c;受到各行各业的追捧和关注。不可否认&#xff0c;Sora 生成的视频效果确实太炸裂了&#xff0c;甩开之前文生视频模型几条街。下面是 Sora vs. Pika vs. RunwayML vs. Stable Video 生成视频效果对比 Sora vs. Pika vs. Run…

centos7 arm服务器编译安装onnxruntime-gpu

前言 ONNX Runtime是适用于Linux,Windows和Mac上ONNX格式的机器学习模型的高性能推理引擎,但在arm服务器上,onnxruntime只有CPU版的,GPU版的没有,因此需要自行去编译GPU版本的才可以。 环境准备 1、python3.8 2、cmake:2.26.0版本以上,可以直接下载aarch64版本的进行…

最大似然函数

1. 似然函数 似然函数在统计学中是一种关于统计模型参数的函数&#xff0c;用于描述在已知随机变量输出结果时&#xff0c;未知参数的可能取值。这个概念起源于对概率和似然性的区分。概率描述的是已知参数时随机变量的输出结果&#xff0c;而似然性则关注在已知随机变量输出结…

Windows端口被占用

查看端口占用情况&#xff1a; 打开命令提示符&#xff08;CMD&#xff09;或PowerShell&#xff0c;运行以下命令来查看端口占用情况&#xff1a; netstat -ano | findstr :<端口号>例如&#xff1a; > netstat -ano | findstr :3306TCP 0.0.0.0:3306 …

《英伟达-本地AI》--NVIDIA Chat with RTX-本机部署

阿丹&#xff1a; 突然发现公司给配置的电脑是NVIDIA RTX 4060的显卡&#xff0c;这不搞一搞本地部署的大模型玩一玩&#xff1f;&#xff1f;&#xff1f; 从0-》1记录一下本地部署的全过程。 本地模型下载地址&#xff1a; Build a Custom LLM with Chat With RTX | NVIDIA…

“利用电子医院记录,针对急性护理环境中的老年人,开发并验证了一项医院脆弱风险评分:一项观察性研究“

总结 背景 年长者在全球范围内成为医疗保健的增长用户。我们的目标是确定是否可以利用常规收集的数据来识别具有虚弱特征并面临不利健康结果风险的年长者。 方法 使用三步方法开发和验证了一种医院脆弱风险评分&#xff0c;该评分基于《国际疾病和相关健康问题统计分类第十次修…

BTY800P-FBEM12/M8传感器分配器

BTY800P-FBEM12/M8传感器分配器简介 BTY800P-FBEM12/M8传感器分配器通常具有多个通道&#xff0c;每个通道可以连接一个传感器&#xff0c;并提供相应的输出连接器&#xff0c;以便将传感器信号分别输出到多个设备或系统。M12/M8传感器分配器具有良好的电气绝缘性能和抗干扰能…

猫多喝水好吗?最有效解决猫不喝水的办法

猫多喝水好吗&#xff1f;充足的水分摄入对猫咪的健康非常重要&#xff0c;有助于维持其体液平衡&#xff0c;促进消化&#xff0c;降低便秘的风险&#xff0c;并保护泌尿系统的健康。猫多喝水好吗&#xff1f;建议每公斤体重的猫每天摄入60-80毫升的水&#xff0c;除了与体重相…