1.RESTful风格程序

 	REST(英文全称为:"Representational State Transfer")指的是一组架构约束条件和原则。它是一种软件架构风格(约束条件和原则的集合,但并不是标准)。 
REST通过资源的角度观察网络,以URI对网络资源进行唯一标识,响应端根据请求端的不同需求,通过无状态通信,对其请求的资源进行表述。满足REST约束条件和原则的架构或接口,就被称为是RESTful架构或RESTful接口。Web应用程序最重要的REST原则是:(1)客户端和服务器之间的交互在请求之间是无状态的;(2)从客户端到服务器的每个请求都必须包含理解请求所必需的信息;(3)如果服务器在请求之间的任何时间点重启,客户端不会得到通知;(4)无状态请求可以由任何可用服务器回答,这十分适合云计算之类的环境,客户端可以缓存数据以改进性能。在服务器端,应用程序状态和功能可以分为各种资源。资源是一个有趣的概念实体,它向客户端公开。资源的例子有:应用程序对象、数据库记录、算法等等。每个资源都使用URI(Universal Resource Identifier)得到一个唯一的地址。所有资源都共享统一的接口,以便在客户端和服务器之间传输状态。使用的是标准的HTTP方法,比如GET、PUT、POST和DELETE等。我们可以向Elasticsearch发送数据或者其返回数据均是JSON(英文全称为:"JavaScript Object Notation")格式。

2.JSON快速入门

什么是JSON:JSON是一种轻量级的文本数据交换格式而非编程语言,其语法只支持字符串,数值,布尔值及null以及在此基础上的对象和数组。举个例子:基础数据类型(支持的基础数据类型参考下表):name = "oldboy"age = 43数组:teachers = ["oldboy", "苍老师","加藤鹰","小园梨央"]对象:obs = {"name": "oldboy","age":43,"habby":"linux,象棋,跑步"}推荐阅读:https://www.w3cschool.cn/json/json-intro.html
数据类型举例说明
字符串“oldboy”使用双引号引用字符串
数值2021值得注意的是,如果使用双引号"2021",则其为字符串而非数字哟~
布尔值true/false只有真(true)和假(false)两个值。
空值null表示一个空值。

1.文档(Document)

文档就是用户存在ElasticSearch的一些数据,它是ElasticSearch中存储数据的最小单元。文档类似于MySQL数据库中表中的一行数据。每个文档都有唯一的"_id"标识,我们可以自定义"_id"(不推荐),如果不指定ES也会自动生成。一个文档是一个可被索引的基础信息单元,也就是一条数据。在一个"index/_doc"里面,我们可以存储任意多的文档。文档是以JSON(Javascript Object Notaion)格式来表示,而JSON是一个到处存在的互联网数据交互格式。JSON比XML更加轻量级,目前JSON已经成为互联网事实的数据交互标准了,几乎是所有主流的编程语言都支持。

2.字段(Filed)

	相当于数据库表的字段,对文档数据根据不同属性进行的分类标识。在ES中,Document就是一个Json Object,一个json objec其实是由多个字段组成的,每个字段它由不同的数据类型。推荐阅读:https://www.elastic.co/guide/en/elasticsearch/reference/7.12/mapping-types.html

3.索引(index)

	一个索引就是一个拥有相似特征的文档(Document)的集合。假设你的公司是做电商的,可以将数据分为客户,产品,订单等多个类别,在ES数据库中就对应多个索引。ES索引、文档、字段关系小结:一个索引里面存储了很多的Document 文档,一个文档就是一个json object,一个json object是由多个不同的filed字段组成;Elasticsearch索引的精髓:一切设计都是为了提高搜索的性能。换句话说,在ES存储的数据,万物皆索引,如果数据没有索引则无法查询数据。

4.分片(Shards)----> (先讲解上面3个概念)

	我们假设平均1个文档占用2k大小,那么按照utf-8对中文的字符编码,该文档能存储682(2 * 1024 / 3)个汉字。如果我们要存储30亿条数据,则需要使用5722GB(3000000000 * 2k,不足6T)存储空间,一个索引可以存储超出单个节点硬件限制的大量数据。比如,一个具有30亿文档数据的索引占据6TB的磁盘空间。如果一个集群有3台服务器,单个节点的磁盘存储空间仅有4T磁盘空间,很明显某一个节点是无法存储下6TB数据的。或者单个节点处理搜索请求,响应太慢。为了解决这个问题,elasticsearch提供了将索引划分成多份的能力,每一份都称之为分片。当你创建一个索引的时候,你可以指定你想要的分片数量。每个分片本身也是一个功能完善并且独立的"索引",这个"索引"可以被放置到集群中的任何节点上。分片很重要,主要有两方面的原因:(1)允许你水平分割/扩展你的内容容量,当然你也可以选择垂直扩容;(2)允许你在各节点上的分片进行分布式,并行的操作,从而显著提升性能(包括但不限于CPU,内存,磁盘,网卡的使用),最显著的是吞吐量的提升;至于一个分片怎么分布,它的文档怎样聚合和搜索请求,是完全由elasticsearch管理的,对于作为用户的你来说,这些都是透明的,无需过分关心。温馨提示:一个Lucene索引我们在Elasticsearch称作分片。一个ElasticSearch索引是分片的集合。当ElasticSearch在索引中搜索的时候,她发送查询到每一个属于索引的分片(Lucene索引),然后合并每个分片的结果到一个全局的结果集。

5.副本(Replicas)

	无论是在公司内部的物理机房,还是在云环境中,节点故障随时都有可能发生,可能导致这些故障的原因包括但不限于服务器掉电,Raid阵列中的磁盘损坏,网卡损坏,同机柜交换机损坏等。在某个分片/节点不知为何就处于离线状态,或者由于任何原因消失了,这种情况下,有一个故障转移机制是非常有用并且是强烈推荐的。为此目的,elasticsearch允许你创建分片的一份或多份拷贝,这些拷贝叫做复制分片(我们也习惯称之为“副本”)。副本之所以重要,主要有以下两个原因:(1)在分片/节点失败的情况下,提供了高可用性。因为这个原因,注意到复制分片从不与主分片(primary shard)置于同一个节点上是非常重要的;(2)扩展你的搜索量/吞吐量,因为搜索可以在所有的副本上并行运行;总之,每个索引可以被分配成多个分片。一个索引也可以被复制0次(意思是没有副本分片,仅有主分片)或多次。一旦复制了,每个索引就有了主分片(作为复制源的原来的分片)和复制分片(主分片的拷贝)之别。分片和复制的数量可以在索引创建的时候指定。在索引创建之后,你可以在任何时候动态地改变复制的数量,但是你事后不能改变分片的数量。默认情况下,elasticsearch中的每个索引被分片1个主分片和1个复制分片,这样的话一个索引总共就有2个分片,我们需要根据索引需求确定分片个数。

6.分配(Allocation)

	所谓的分配就是将分片分配给某个节点的过程,包括主分片或者副本。如果是副本,还包含从主分片复制数据的过程,这个过程由master节点完成的。

7.类型(type)

	在elasticsearch 5.x及更早的版本,在一个索引中,我们可以定义一种或多种类型。但在ES 7.x版本中,仅支持"_doc"类型。一个索引是你的索引的一个逻辑上的分类/分区,其语义完全由你来定,通常,会为具有一组共同字段的文档定义一个类型。

8.映射(Mapping)

	mapping是处理数据的方式和规则方面做一些限制,如:某个字段的数据类型,默认值,分析器,是否被索引等等。这些都是映射里面可以设置的,其它就是处理ES里面数据的一些使用规则设置也叫做映射。按着最优规则处理数据对性能提高很大,因此才需要建立映射,并且需要思考如何建立映射才能对性能更好。值得注意的是,课程后面有相应的案例哟~

9.DSL概述

	Elasticsearch提供丰富且灵活的查询语言叫做DSL查询(Query DSL),它允许你构建更加复杂,强大的查询。DSL(Domain Specific Language特定领域语言)以JSON请求体的形式出现。值得注意的是,下面由相关的案例。

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

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

相关文章

《从零构建大语言模型》学习笔记4,注意力机制1

《从零构建大语言模型》学习笔记4,自注意力机制1 文章目录《从零构建大语言模型》学习笔记4,自注意力机制1前言一、实现一个简单的无训练权重的自注意力机制二、实现具有可训练权重的自注意力机制1. 分步计算注意力权重2.实现自注意力Python类三、将单头…

昇思+昇腾开发板+DeepSeek模型推理和性能优化

昇思昇腾开发板DeepSeek模型推理和性能优化 模型推理 流程: 权重加载 -> 启动推理 -> 效果比较与调优 -> 性能测试 -> 性能优化 权重加载 如微调章节介绍,最终的模型包含两部分:base model 和 LoRA adapter,其中base …

未给任务“Fody.WeavingTask”的必需参数“IntermediateDir”赋值。 WpfTreeView

c#专栏记录: 报错 未给任务“Fody.WeavingTask”的必需参数“IntermediateDir”赋值。 WpfTreeView 生成 解决办法 清理和重新生成项目 完成上述配置后,尝试执行以下步骤: 清理项目:删除 bin 和 obj 文件夹。 重新生成项目&…

[Linux]学习笔记系列 -- [arm][lib]

文章目录arch/arm/lib/delay.cregister_current_timer_delay 注册当前定时器延迟read_current_timer 读取当前定时器drivers/clocksource/timer-stm32.cstm32_clocksource_init STM32 平台上初始化时钟源https://github.com/wdfk-prog/linux-study arch/arm/lib/delay.c regis…

harbor仓库搭建(配置https)

目录 1. 环境准备 2. 配置https的原因 3. 生成ca证书 4. 搭建harbor仓库 5. 访问harbor 6. 修改加密算法 1. 环境准备 需要提前安装docker和docker-compose,harbor仓库版本越新,对应的docker和docker-compose版本越新。 主机IP192.168.48.19dock…

C++多线程服务器

C多线程服务器 因为自己同时在看多本书,之前看过《TCP/IP 网络编程》一书,其中有一个自己编写一个多线程服务器的例子,于是就把代码直接抄了一变。 在学习网络编程前需要先了解网络的7层模型。 具体代码如下: 服务器端&#xff1a…

【Pandas】常用数据处理技巧

一. 数据读取 1.pd.to_csv & pd.read_csv 细节: 1.pd.read_csv 需要 ignore_index True or ,index_col0 否则会有列Unnamed0 2.pickle具有更快的读取速度,与更小的体积。 读取前N行(若不需获取所有数据) pd.read_csv(…

Docker Compose 部署高可用 MongoDB 副本集集群(含 Keepalived + HAProxy 负载均衡)

Docker Compose 部署高可用 MongoDB 副本集集群(含 Keepalived HAProxy 负载均衡)背景与目标📋 环境规划**服务器信息****软件版本**部署步骤1. 创建目录结构2、生成 keyFile(三台机器内容必须一致)3. 准备 Keepalive…

MySQL(189)如何分析MySQL的锁等待问题?

分析MySQL的锁等待问题有助于发现和解决数据库性能瓶颈。锁等待问题通常会导致数据库响应时间变长,影响系统的整体性能。以下是详细深入的方法和代码示例,帮助你分析和解决MySQL的锁等待问题。 一、锁的类型和概念 在MySQL中,主要有以下几种锁…

26.Scikit-learn实战:机器学习的工具箱

Scikit-learn实战:机器学习的工具箱 🎯 前言:机器学习界的"宜家家具" 还记得第一次逛宜家的感受吗?琳琅满目的家具,每一件都有详细的说明书,组装简单,样式统一,关键是—…

wordpress文章摘要调用的3种方法

以下是WordPress文章摘要的3种调用方法: 1. 使用the_excerpt()函数 这是WordPress自带的函数,用于调用文章摘要。如果文章有手动填写的摘要,则会显示手动摘要;如果没有手动摘要,WordPress会自动从文章内容中提取前55个单词作为摘…

java excel转图片常用的几种方法

十分想念顺店杂可。。。在 Java 中实现 Excel 转图片,常用的方法主要分为两类:使用商业库(简单高效但可能收费)和使用开源库组合(免费但实现复杂)。以下是几种常用方案及实现思路:一、使用商业库…

QT项目 -仿QQ音乐的音乐播放器(第五节)

目录 一、CommonPage界⾯设置和显示 二、自定义ListItemBox 三、支持hover效果 四、自定义VolumeTool 五、界面设置 六、页面创建及弹出 七、绘制三角 一、CommonPage界面设置和显示 void CommonPage::setCommonPageUI(const QString &title, const QString &imag…

wstool和git submodule优劣势对比

wstool 和 git submodule 都可以用来管理项目中的外部源代码依赖,但它们的设计理念、工作流程和适用场景有很大不同。 我们来深入对比一下它们的优势和劣势。 核心理念比喻 git submodule:像是在你的汽车设计图纸中,直接嵌入了另一家公司&…

六、RuoYi-Cloud-Plus OSS文件上传配置

1.前面我们完成了RuoYi-Cloud-Plus 部署及启动,此刻已经可以正常访问。 前面文章的专栏内容在这,感兴趣可以看看。 https://blog.csdn.net/weixin_42868605/category_13023920.html 2.但现在虽然已经启动成功,但有很多功能我们依旧用不了&a…

达梦数据库日常运维命令

查询数据库表空间数据文件使用大小限制DECLARE K INT:(SELECT cast(PAGE()/1024 as varchar)); BEGIN SELECTF."PATH" 数据文件 ,F.CLIENT_PATH,G.NAME 所属表空间,F.MAX_SIZE||M 文件扩展限制,(CASE F.AUTO_EXTEND WHEN 1 THEN 是 ELSE 否 END) 文件…

使用线性降维方法进行数据降维

在数据科学与机器学习的领域中,维度灾难问题经常导致模型的性能下降。线性降维方法是一种常见的技术,用于在保留尽可能多的原始数据特征的同时,减少数据集的维度。这些方法通过将高维数据映射到低维空间来减少特征数量,从而加速模…

OpenCV图像裁剪与 ROI 操作

在图像处理领域,ROI(Region of Interest)区域感兴趣操作是非常基础而重要的一环。无论是进行目标检测、图像分割,还是简单的图像处理,都离不开对图像某一区域的选取与处理。本文将结合 OpenCV 的 C 接口,详…

关于AI应用案例计算机视觉、自然语言处理、推荐系统和生成式AI四大领域的详细技术分析。

一、计算机视觉应用:实时物体检测 案例描述:使用YOLOv8模型实现实时物体检测系统,应用于安防监控场景。 1. 代码示例(Python) python from ultralytics import YOLO import cv2# 加载预训练模型 model YOLO("…

各个网络层拥有的协议简写

OSI 七层模型(从下到上分别为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层)是网络通信的经典理论框架,每层都有其核心功能和对应的协议。以下是各层的主要协议列举:1. 物理层(Physical Layer&#xff…