尚硅谷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.mzph.cn/news/692506.shtml

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

相关文章

自动驾驶中之定位总结

1 前言2 典型的单个定位方式2.1 基于通信的定位方法2.1.1 GNSS 全球卫星导航系统2.1.1.1 gnss的优点与缺点2.1.1.2 gnss定位技术2.1.1.2.1 RTK定位技术2.1.1.2.2 PPP定位技术 2.1.1.2 gnss定位技术总结 2.1.2 车联网定位 2.1 基于航位推算的定位方法2.1.1 惯性测试单元定位IMU2…

Microsoft Office Visio 2007中绘制大括号

文章目录 一、Microsoft Office Visio 2007中绘制大括号 一、Microsoft Office Visio 2007中绘制大括号 在Microsoft Office Visio 2007中绘制大括号的方法如下&#xff1a; 打开Visio 2007——文件——形状——其他Visio方案——标注 此时左侧栏中出现“标注”栏&#xff0c…

代码随想录刷题笔记-Day21

1. 二叉搜索树中的插入操作 701. 二叉搜索树中的插入操作https://leetcode.cn/problems/insert-into-a-binary-search-tree/给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和要插入树中的值 value &#xff0c;将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。…

Hive 窗口函数札记

窗口函数的理解是hive函数里的一个高阶内容&#xff0c;把一些容易混淆的做个记录&#xff0c;以方便随时查看。 1&#xff1a;ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING 含义&#xff1a; 这个定义表示窗口范围从当前行的前任意多行开始&#xff08;包括最早的行&a…

Miniconda 安装和使用笔记

Miniconda是Anaconda的简化版, 可以管理多个Python版本的环境. 实际使用的话, 占用的空间不会很小, 我跑一些正常的应用后, 安装目录占用空间4.3GB, 安装建议要预留10到20G的空间. 安装 Miniconda 下载安装包 https://docs.anaconda.com/free/miniconda/历史版本 https://re…

Discuz! X收藏列表页调用封面图片详细教程

Discuz! X默认收藏列表不显示封面图&#xff0c;我们接到客户需求要开发封面图功能在帖子列表&#xff0c;这是我们整理好的详细教程&#xff0c;下载即可查看 修改后&#xff0c;显示封面的收藏列表截图&#xff1a; 详细开发教程下载地址&#xff1a;Discuz! X收藏列表页调用…

【9】知识存储

一、图数据库neo4j Neo4j是一个高性能的,NOSQL图形数据库&#xff0c;它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎。单节点的服务器可承载上亿级的节点和关系&#xff0c;单节点性能不够时也可进行分布式集群部…

提升认知水平和防止偏见浅谈

提升认知水平和防止偏见浅谈 《庄子外物》&#xff1a;井蛙不可语海&#xff0c;夏虫不可语冰。 不要跟井底的青蛙谈论大海&#xff0c;因为它的认知只有井底那么大&#xff0c;大海对于它来说是认知盲区&#xff1b;不要与夏虫去谈论冰雪&#xff0c;因为夏虫一生很短没有经历…

5. D. In Love(贪心)

题目链接 D. In Love 题意 线段的集合&#xff0c;有两种操作 插入一个线段删除一个线段 每次操作后都要去查询是否存在两个线段不相交 题解 首先先看两个线段不相交需要满足什么条件 也就是较 大 l > 小 r 大l>小r 大l>小r即可满足不相交 我们进行推广 当集合…

big three(c++)

"Big Three"是指在C类中需要手动实现的三个特殊成员函数&#xff0c;分别是拷贝构造函数&#xff08;Copy Constructor&#xff09;、拷贝赋值运算符&#xff08;Copy Assignment Operator&#xff09;和析构函数&#xff08;Destructor&#xff09;。这三个函数通常…

手撕qsort函数

前言 本篇主要讲解的是qsort函数细节以及运用实例。 紧跟我的脚步一起手撕qsort函数吧~ 欢迎关注​​个人主页&#xff1a;逸狼 更多优质内容&#xff1a; 拿捏c语言指针&#xff08;上&#xff09; 拿捏c语言指针&#xff08;中&#xff09; 拿捏c语言指针&#xff08;下&…

【数据结构/c++】求解有向无环图DAG的关键路径

#include<cstring>//memset头文件 #include<algorithm>//fill头文件 #include<vector> #include<stdio.h> #include<stack> #include<queue> using namespace std; const int MAXV510; struct Node{int v,w;Node(int _v,int _w):v(_v),…

超详细的总结!大模型算法岗面试题(含答案)来了!

文章目录 技术交流一、基础篇二、大模型&#xff08;LLMs&#xff09;进阶三、大模型&#xff08;LLMs&#xff09;LangChain四、大模型分布式训练五、大模型&#xff08;LLMs&#xff09;推理用通俗易懂的方式讲解系列 大模型应该是目前当之无愧的最有影响力的AI技术&#xff…

学习 Kubernetes(K8s)、常用命令

学习 Kubernetes&#xff08;K8s&#xff09;是现代云原生应用开发和部署的关键&#xff0c;它提供了一种灵活的、自动化的方式来管理容器化的应用程序。下面是学习 Kubernetes 和一些常见命令的建议&#xff1a; 学习 Kubernetes 官方文档&#xff1a;Kubernetes官方文档是学…

【Langchain】+ 【baichuan】实现领域知识库【RAG】问答系统

本项目使用Langchain 和 baichuan 大模型&#xff0c; 结合领域百科词条数据&#xff08;用xlsx保存&#xff09;&#xff0c;简单地实现了领域百科问答实现。 from langchain.text_splitter import CharacterTextSplitter, RecursiveCharacterTextSplitter from langchain_co…

2023年便宜的云服务器分享:最低26元4核16G

2024年阿里云服务器租用价格表更新&#xff0c;云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、ECS u1实例2核4G、5M固定带宽、80G ESSD Entry盘优惠价格199元一年&#xff0c;轻量应用服务器2核2G3M带宽轻量服务器一年61元、2核4G4M带宽轻量服务器一年165元12个月、2核4G服…

嵌入式学习第十九天!(时间获取、文件属性和权限的获取、软链接和硬链接)

时间获取&#xff1a; 1. time time_t time(time_t *tloc); 功能&#xff1a;返回1970-01-01到现在的秒数&#xff08;格林威治时间&#xff09; 参数&#xff1a; tloc:存放秒数空间首地址 返回值: 成功返回秒数 失败返回-1 2. localtime struct tm *localtime(const tim…

python celery使用队列

在celery的配置方法中有个参数叫task_routes&#xff0c;是用来设置不同的任务 消费不同的队列&#xff08;也就是路由&#xff09;。 格式如下&#xff1a; { ‘task name’: { ‘queue’: ‘queue name’ }}直接上代码&#xff0c;简单明了&#xff0c;目录格式如下&#x…

阿里云服务器“镜像”全方面解析

阿里云服务器镜像怎么选择&#xff1f;云服务器操作系统镜像分为Linux和Windows两大类&#xff0c;Linux可以选择Alibaba Cloud Linux&#xff0c;Windows可以选择Windows Server 2022数据中心版64位中文版&#xff0c;阿里云服务器网aliyunfuwuqi.com来详细说下阿里云服务器操…

day37打卡

day37打卡 738. 单调递增的数字 解法&#xff0c;贪心&#xff1a; 从后向前遍历&#xff0c;找出并记录最终递减的位置&#xff0c;把当前减1&#xff0c;再把后面的全置为9即可。 举个例子&#xff0c;数字&#xff1a;332&#xff0c;从前向后遍历的话&#xff0c;那么就…