04_手工画图剖析Elasticsearch核心概念:NRT、索引、分片、副本等

news/2024/10/1 19:10:27

课程大纲

1、lucene和elasticsearch的前世今生
2、elasticsearch的核心概念
3、elasticsearch核心概念 vs. 数据库核心概念


1、lucene和elasticsearch的前世今生

lucene,最先进、功能最强大的搜索库,直接基于lucene开发,非常复杂,api复杂(实现一些简单的功能,写大量的java代码),需要深入理解原理(各种索引结构)

elasticsearch,基于lucene,隐藏复杂性,提供简单易用的restful api接口、java api接口(还有其他语言的api接口)
(1)分布式的文档存储引擎
(2)分布式的搜索引擎和分析引擎
(3)分布式,支持PB级数据

开箱即用,优秀的默认参数,不需要任何额外设置,完全开源

关于elasticsearch的一个传说,有一个程序员失业了,陪着自己老婆去英国伦敦学习厨师课程。程序员在失业期间想给老婆写一个菜谱搜索引擎,觉得lucene实在太复杂了,就开发了一个封装了lucene的开源项目,compass。后来程序员找到了工作,是做分布式的高性能项目的,觉得compass不够,就写了elasticsearch,让lucene变成分布式的系统。


2、elasticsearch的核心概念

(1)Near Realtime(NRT):近实时,两个意思,从写入数据到数据可以被搜索到有一个小延迟(大概1秒);基于es执行搜索和分析可以达到秒级

(2)Cluster:集群,包含多个节点,每个节点属于哪个集群是通过一个配置(集群名称,默认是elasticsearch)来决定的,对于中小型应用来说,刚开始一个集群就一个节点很正常
(3)Node:节点,集群中的一个节点,节点也有一个名称(默认是随机分配的),节点名称很重要(在执行运维管理操作的时候),默认节点会去加入一个名称为“elasticsearch”的集群,如果直接启动一堆节点,那么它们会自动组成一个elasticsearch集群,当然一个节点也可以组成一个elasticsearch集群

(4)Document&field:文档,es中的最小数据单元,一个document可以是一条客户数据,一条商品分类数据,一条订单数据,通常用JSON数据结构表示,每个index下的type中,都可以去存储多个document。一个document里面有多个field,每个field就是一个数据字段。

product document

{
"product_id": "1",
"product_name": "高露洁牙膏",
"product_desc": "高效美白",
"category_id": "2",
"category_name": "日化用品"
}

(5)Index:索引,包含一堆有相似结构的文档数据,比如可以有一个客户索引,商品分类索引,订单索引,索引有一个名称。一个index包含很多document,一个index就代表了一类类似的或者相同的document。比如说建立一个product index,商品索引,里面可能就存放了所有的商品数据,所有的商品document。
(6)Type:类型,每个索引里都可以有一个或多个type,type是index中的一个逻辑数据分类,一个type下的document,都有相同的field,比如博客系统,有一个索引,可以定义用户数据type,博客数据type,评论数据type。

商品index,里面存放了所有的商品数据,商品document

但是商品分很多种类,每个种类的document的field可能不太一样,比如说电器商品,可能还包含一些诸如售后时间范围这样的特殊field;生鲜商品,还包含一些诸如生鲜保质期之类的特殊field

type,日化商品type,电器商品type,生鲜商品type

日化商品type:product_id,product_name,product_desc,category_id,category_name
电器商品type:product_id,product_name,product_desc,category_id,category_name,service_period
生鲜商品type:product_id,product_name,product_desc,category_id,category_name,eat_period

每一个type里面,都会包含一堆document

{
"product_id": "2",
"product_name": "长虹电视机",
"product_desc": "4k高清",
"category_id": "3",
"category_name": "电器",
"service_period": "1年"
}

{
"product_id": "3",
"product_name": "基围虾",
"product_desc": "纯天然,冰岛产",
"category_id": "4",
"category_name": "生鲜",
"eat_period": "7天"
}

(7)shard:单台机器无法存储大量数据,es可以将一个索引中的数据切分为多个shard,分布在多台服务器上存储。有了shard就可以横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上去执行,提升吞吐量和性能。每个shard都是一个lucene index。
(8)replica:任何一个服务器随时可能故障或宕机,此时shard可能就会丢失,因此可以为每个shard创建多个replica副本。replica可以在shard故障时提供备用服务,保证数据不丢失,多个replica还可以提升搜索操作的吞吐量和性能。primary shard(建立索引时一次设置,不能修改,默认5个),replica shard(随时修改数量,默认1个),默认每个索引10个shard,5个primary shard,5个replica shard,最小的高可用配置,是2台服务器。


3、elasticsearch核心概念 vs. 数据库核心概念

Elasticsearch 数据库


Document 行
Type 表
Index 库

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

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

相关文章

02_用大白话告诉你什么是Elasticsearch

大白话、什么是Elasticsearch Elasticsearch,分布式,高性能,高可用,可伸缩的搜索和分析系统 1、什么是搜索? 2、如果用数据库做搜索会怎么样? 3、什么是全文检索、倒排索引和Lucene? 4、什么是Elasticsearch?1、什么是搜索? 百度:我们比如说想找寻任何的信息的时候,…

25个单据看透支付

本文深入解析了25个关键单据在支付环节中的核心作用与重要性。这些单据涵盖了支付指令、收款确认、交易凭证等多个方面,是支付流程中不可或缺的组成部分。文章通过详细剖析每个单据的功能、使用场景及合规要求,为读者提供了一套全面的支付单据知识体系。此外,文章还探讨了单…

吴恩达大模型教程笔记-七-

吴恩达大模型教程笔记(七) LangChain_微调ChatGPT提示词_RAG模型应用_agent_生成式AI - P29:5——基于文档的问答 - 吴恩达大模型 - BV1gLeueWE5N人们构建的最常见复杂应用之一。使用llm是一个可回答文档内或关于文档问题的系统,给定一段文本可能来自PDF文件或网页,或公司…

吴恩达大模型教程笔记-六-

吴恩达大模型教程笔记(六) LangChain_微调ChatGPT提示词_RAG模型应用_agent_生成式AI - P21:3. 第二篇 - RAG 指标三元组(RAG Triad of metrics) 中英文字幕 - 吴恩达大模型 - BV1gLeueWE5N本节课我们将深入探讨评估,我们将带你了解如何评估服务器架设的核心概念,具体来说…

吴恩达大模型教程笔记-二-

吴恩达大模型教程笔记(二) 【LangChain大模型应用开发】DeepLearning.AI - P4:4——链 - 吴恩达大模型 - BV1iZ421M79T这节课,这节课。哈里森将教授土地链最重要的基础构建块,哈里森将教授土地链最重要的基础构建块,即链条,即链条,链条通常结合一个大语言模型和一个提示…

御网杯

MISC MISC-信息安全大赛的通知 下载附件后打开 修改字体颜色得到flag Misc-编码转换 首先发现他是一个Brainfuck 编码进行解密flag{ab71cda1 这是第一段线索 这是第二段线索,发现是一个js解密b495e13b3f21 进行第三段解码,发现他是Ook编码方式f6fd50221978} 最终拼接得到flag…

御网杯2

Reverse Reverse-ez_apk 用IDA进行打开,找到main函数 def decrypt(encrypted_text, decryption_key):key_bytes = decryption_key.encode()characters = list(encrypted_text)decrypted_characters = [] * len(characters)for index, character in enumerate(characters):if c…

Free5GC源码研究(4) - AUSF研究

本文研究AUthentication Server Function (AUSF) 主要实现的功能AUSF的概念 在开始研究其源代码之前,我们需要先对AUSF有一些概念上的认识。AUSF的主要技术文档是TS29.509,规定了AUSF提供哪些服务,其对应的API接口有哪些。总的来说,AUSF就是帮助其他NF,比如AMF,来认证一个…