(3)相关概念和索引的CURD

news2024/11/20 0:37:56

核心概念

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/index.html

什么是搜索引擎?

  • 全文搜索引擎

自然语言处理(NLP)、爬虫、网页处理、大数据处理。如谷歌、百度、搜狗、必应等等。

  • 垂直搜索引擎

有明确搜索目的的搜索行为。各大电商网站、OA、站内搜索、视频网站等。

面向海量数据,如何达到“搜索引擎”级别的查询效率?

索引:

  • 帮助快速检索
  • 以数据结构为载体
  • 以文件的形式落地

数据库的存储数据最终也是以文件形式落地的。

在这里插入图片描述

节点

  • 每个节点就是一个Elasticsearch的实例(一个java进程)。

  • 一个节点≠一台服务器。

生产环境下一台服务器启动一个节点。

启动的时候,可以在一个文件夹里边启动多个节点,也可以在每个文件夹里边启动一个节点(node1、node2文件夹)。

这里是启动了9个节点。

在这里插入图片描述

角色

master:候选节点

data:数据节点

data_content:数据内容节点

data_hot:热节点

data_warm:索引不再定期更新,但仍可查询

data_code:冷节点,只读索引

Ingest:预处理节点,作用类似于Logstash中的Filter

ml:机器学习节点

remote_cluster_client:候选客户端节点

transform:转换节点

voting_only:仅投票节点(master也是一个投票节点,也有的节点只是一个投票节点)

node-1\2\3是master候选节点,node-3是一个主节点,3宕机了,会从master中选举出来一个主节点
node-4到node-9是data候选节点

分片

  • 一个索引包含一个或多个分片,在7.0之前默认五个主分片,每个主分片一个副本;在7.0之后默认一个主分片。副本可以在索引创建之后修改数量,但是主分片的数量一旦确定不可修改,只能创建索引。

边框粗的是主分片,支持读写操作的,边框细的是副本分片,支持读操作的。一个主分片,可以有多个副本分片。

  • 每个分片都是一个Lucene实例,有完整的创建索引和处理请求的能力。

  • ES会自动再nodes上做分片均衡。

假设副本分片数量由2变成3,副本上的数据会做 尽量、均匀的分布在每一个节点。尽量把节点的性能分配的均匀一点。

假设又增加了一个节点node-10(横向扩容,增加了数据的容量),会触发分片均衡。

  • 一个doc不可能同时存在于多个主分片中,但是当每个主分片的副本数量不为一时,可以同时存在于多个副本中。
  • 每个主分片和其副本分片不能同时存在于同一个节点上,所以最低的可用配置是两个节点互为主备。

在这里插入图片描述

my_test索引文件分成了3个主分片,边框粗的0\1\2组成了一个完整的数据文件。

node-5的主分片0和副本分片0 不能同时存在于node-5节点上。

在这里插入图片描述

集群

  • 原生分布式。

  • 一个节点≠一台服务器。

集群的健康值检查

(1) 健康值状态

① Green:所有Primary和Replica均为active,集群健康

② Yellow:至少一个Replica不可用,但是所有Primary均为active,数据仍然是可以保证完整性的。

③ Red:至少有一个Primary为不可用状态,数据不完整,集群不可用。

(2) 健康值检查

① _cat/health( _cat/health?v)

② _cluster/health

索引和文档

类型-Type: 7.x 弱化 8.x完全删除。 过渡阶段使用 _doc。

文档-Document 就是我们存入的数据。

索引的CURD

基于REST风格的API

(1)创建索引:PUT /index?psretty

(2)查询索引:GET _cat/indices?v

(3)删除索引:DELETE /index?pretty

(4)插入数据:PUT /index/_doc/id{ Json数据}

(5)

  1. 全量替换 PUT /index/_doc/id

  2. 指定字段更新 POST /index/_update/id

(6)删除数据 DELETE /index/type/id

创建索引
PUT /product

查询该索引下的所有信息
GET /product/_search

查询该索引下第一条数据
GET /product/_doc/1

插入和更新都是用的PUT
修改1的数据,把价格改为3999,再次执行。再次查询一下,数据已经被修改。
1.更新的时候把json的内容都写上,只修改了price的值。结果json内容还是都存在的
PUT /product/_doc/1
{
"name" : "xiaomi phone",
"desc" : "shouji zhong de zhandouji",
"price" : 13999,
"tags": [ "xingjiabi", "fashao", "buka" ]
}
2.更新的时候只把price写上了,结果json内容变成了只有price的了。
PUT /product/_doc/1
{
"price" : 13999
}
那有没有办法只更新price字段值呢?
POST /product/_doc/1/_update
{
  "doc":{
    "price" : 999
  }
}
再次查询,确实只更新了price的值。
在更新的时候给出的提示,推荐使用另一个语法。
#! Deprecation: [types removal] Specifying types in document update requests is deprecated, use the endpoint /{index}/_update/{id} instead.
使用这个语法试试。
POST /product/_update/1
{
  "doc":{
    "price" : 9991
  }
}
再次查询,确实只更新了price的值。

删除索引
DELETE /product/_doc/1

PUT /product/_doc/2
{
"name" : "xiaomi nfc phone",
"desc" : "zhichi quangongneng nfc,shouji zhong de jianjiji",
"price" : 4999,
"tags": [ "xingjiabi", "fashao", "gongjiaoka" ]
}
PUT /product/_doc/3
{
"name" : "nfc phone",
"desc" : "shouji zhong de hongzhaji",
"price" : 2999,
"tags": [ "xingjiabi", "fashao", "menjinka" ]
}
PUT /product/_doc/4
{
"name" : "xiaomi erji",
"desc" : "erji zhong de huangmenji",
"price" : 999,
"tags": [ "low", "bufangshui", "yinzhicha" ]
}
PUT /product/_doc/5
{
"name" : "hongmi erji",
"desc" : "erji zhong de kendeji",
"price" : 399,
"tags": [ "lowbee", "xuhangduan", "zhiliangx" ]
}

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

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

相关文章

脉诊在现代医学中的应用与局限性

目录 一、脉诊在疾病诊断中的作用及局限性 二、现代脉诊仪的可靠性 三、中医在现代医学中的地位 四、中西医结合的发展趋势 结论 一、脉诊在疾病诊断中的作用及局限性 脉诊作为中医诊断的重要方法之一,通过检测脉搏波的特征来了解患者的身体状况,进…

学习笔记:《Foundation models for generalist medical artificial intelligence》

目录 一、GMAI模型的概念与优势 二、GMAI模型面临的挑战 1.验证 2.社会偏见 3.隐私 4.规模 5.技术挑战 三、结论: 参考文献 最近在《Nature》杂志上发表的一篇名为《Foundation models for generalist medical artificial intelligence》的文章&#xff0c…

品牌如何借助江湖老大“音乐记忆”做宣传?

去年有个卖咖啡的小姐姐火了,“咖啡你冲不冲,冲冲冲冲冲”节奏分明、及其洗脑,引发众多网友模仿和音频采用。 其实这种借用音乐记忆扩大品牌知名度和传播范围的品宣手段十分常见,仔细回想一下,我们平时听到较为魔性的…

05-Node.js—http模块

目录 1、HTTP 协议1.1 概念1.2 请求报文的组成1.3 HTTP 的请求行1.4 HTTP 请求头1.5 HTTP 的请求体1.6 响应报文的组成 2、创建 HTTP 服务2.1 操作步骤2.2 测试2.3 注意事项 3、获取 HTTP 请求报文3.1 请求方法 request.method3.2 请求版本 request.httpVersion3.3 请求路径 re…

基本绘图函数

基本绘图函数 cv2.line()函数------用于绘制直线. 算子解释: cv2.line(img1, (20, 80), (120, 80), (0, 255, 255))cv2.line(img, pt1, pt2, color, thicknessNone, lineTypeNone, shiftNone) img:背景图。 pt1:直线起点坐标。 pt2&#x…

实战详解docker安装步骤——Linux操作系统(CentOS7.9)下安装容器技术docker引擎

一、安装docker依赖环境 yum install -y yum-utils device-mapper-persistent-data lvm2二、配置国内docker-ce的yum源 (这里采用的是阿里云镜像配置文件) yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-c…

基于java Springboot+Vue+shiro前后端分离疫情防疫管理系统设计和实现2.0

基于java SpringbootVueshiro前后端分离疫情防疫管理系统设计和实现2.0 博主介绍:5年java开发经验,专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获…

老板们搞怪营业,品牌好感度upup真有梗

老板下场营业最经典的莫过于“老乡鸡”了。在手撕联名信事件出圈后,老乡鸡围绕束从轩创始人IP,开展了一系列社交传播宣传,比如“咯咯哒糊弄学”等。 50多岁的老乡鸡董事长束从轩,一改传统企业家严肃正经的形象,跟着老乡…

Pytorch深度学习笔记(九)加载数据集

目录 1.名词解释 2. 数据集加载器Dataloader 3.完整代码 推荐课程:08.加载数据集_哔哩哔哩_bilibili 1.名词解释 名词解释:Epoch,Batch,Batch-Size,Iterations Epoch(周期):指所…

职工管理系统(C++)

职工管理系统有以下8个功能: - 增加职工信息:实现批量添加职工功能,将信息录入到文件中,职工信息为:职工编号、姓名、部门编号 - 显示职工信息:显示公司内部所有职工的信息 - 删除离职职工:按照…

java防止重复提交的方法

为了防止重复提交,可以采用以下几种方法: 1. 令牌机制(Token) 在表单中添加一个隐藏字段,用于存放一个随机生成的令牌(Token)。当用户提交表单时,将令牌一起提交到服务器。服务器接收…

Win10系统重装过程(一键装机)

相信不少小伙伴都有刷机重装系统的过程,那种镜像,up盘,压缩包等多个复杂过程也折磨的大伙不堪重负,因此本期带来简易版一键装机相应操作。 下载地址: 小心点击下方链接,点击即下载(3.66GB&…

SAM:图像分割的里程碑

Facebook的新模型称为SAM或Segment Anything Model,具有在计算机视觉行业中引起积极变革的潜力。这个突破性模型不同于以前使用的任何其他图像分割模型。 传统上,会为不同类型的图像,如人或汽车,分别训练不同的模型,但…

成功上岸国防科大!

Datawhale干货 作者:王洲烽,太原理工大学,Datawhale成员 写在前面 相比较于一般的经验贴,我更想在这里讲述一下自己的故事。我一开始报考的是北理工,但很遗憾9月份北理改考408了,无缘京爷,所以…

路径规划 | 图解概率路图PRM原理及其参数分析

目录 0 专栏介绍1 基于采样的规划算法2 概率路图基本原理3 PRM算法流程4 PRM参数分析4.1 采样点数4.2 阈值 d max ⁡ \mathrm{d}_{\max} dmax​ 0 专栏介绍 🔥附C/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细介绍全局规划…

nginx简单介绍

文章目录 1. 下载并解压2. 80端口被占用,更改nginx默认的监听端口3. 访问nginx4. 在linux上安装nginx5. nginx常用命令6. nginx.conf 1. 下载并解压 官网下载 2. 80端口被占用,更改nginx默认的监听端口 更改conf/nginx.conf文件 3. 访问nginx ht…

[译] 实战 React 18 中的 Suspense

> 原文:https://dev.to/darkmavis1980/a-practical-example-of-suspense-in-react-18-3lln React 18 带来了很多变化,它不会破坏你已经编写过的代码,并且有很多改进和一些新概念。 它也让很多开发人员,包括我,意识到…

vue---mixin混入

一个混入对象可以包含任意组件选项(如data、methods、created、mounted等等)。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项。 我们可以使用混入,向组件注入自定义的行为。 和组件注册和指令一样 vu…

Oracle Linux 9 上基于 CRI-O 安装 Kubernetes 1.27 集群

Oracle Linux 9 上基于 CRI-O 安装 Kubernetes 1.27 集群 1. 禁用 swap2. 禁用防火墙3. 将 SELinux 设置为 permissive 模式4. 安装cri-o5. 安装kubelet kubeadm kubectl6. 更新模块设置7. 初始化Kubernetes集群8. 配置集群访问9. 安装网络插件10. 验证集群 1. 禁用 swap sudo…

docker容器原样迁移完整过程(nignx例子)

我们在测试服务器上,辛辛苦苦开发,各种配置好了服务,然后想着傻瓜式的迁移部署。接下来的就是干货了 过程描述: 为了体现一个完成性的描述,我们最初拉镜像开始,一直说到迁移后的服务正常运行。 接下来以ng…