首页 > 其他分享 >04_手工画图剖析Elasticsearch核心概念:NRT、索引、分片、副本等

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

时间:2024-10-01 19:00:21浏览次数:7  
标签:category product name 04 shard Elasticsearch elasticsearch type NRT

课程大纲

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 库

标签:category,product,name,04,shard,Elasticsearch,elasticsearch,type,NRT
From: https://www.cnblogs.com/siben/p/18443091

相关文章

  • 01_Elasticsearch顶尖高手系列课程的介绍
    3、课程内容介绍(1)核心知识篇课程特点(1)使用最新Elasticsearch5.2版本讲解,市面上的书籍和视频几乎都停留在2.x版本(2)深入浅出ES核心工作原理,全部手工画图讲解,完全不同于市面上已有视频的PPT讲解(3)涵盖Elasticsearch所有核心知识点,系统化,体系完整详细,有一定深度,包括完整Java开发......
  • 04-连接树莓派
    课堂目标掌握连接树莓派的三种方式。掌握调节屏幕分辨率的方法。1.外设接口连接准备micro-HDMI转接头HDMI线网线鼠标键盘连接外部设备依次插入网线、键盘、鼠标、显示器,最后插入电源。接通电源,树莓派会自动开机。设置屏幕分辨率如果启动后发现......
  • Elasticsearch学习笔记(3)
    RestAPIElasticsearch(ES)官方提供了多种语言的客户端库,用于与Elasticsearch进行交互。这些客户端库的主要功能是帮助开发者更方便地构建和发送DSL(DomainSpecificLanguage)查询语句,并通过HTTP请求与Elasticsearch集群进行通信。官方文档地址:https://www.elastic.co/guide/en/......
  • C++ 语言特性04 - decltype关键字
    一:概述        decltype是C++11引入的一个关键字,用于查询表达式的类型,而不对表达式进行求值。它的主要作用是在编译时确定变量或表达式的类型,非常适合在模板编程和泛型编程中使用。二:使用场景    1.获取变量的类型intx=10;decltype(x)y=20;//......
  • (洛谷)题目题号P1047 [NOIP2005 普及组] 校门外的树
    Hello大家好我是小亦,这是今天发布的第二篇题解,唉我就在想怎么样才能把粉丝提上来呢隔壁朋友都比我高了好多唉苦恼qwq,好吧接受现实,好那么好今天我们来讲的是来自于NOIP2005年普及组的真题名叫:校门外的树,其实这道题跟其他几道题很相似,应该是同一家的吧qwq,好了不废话了思路给大家q......
  • 实时语音交互中文基准首期测评出炉;美取消 SB-1047 法案,大模型厂商大难不死丨 RTE 开发
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编......
  • MySQL登录时出现ERROR 1045: Access denied for user ‘root‘@‘localhost‘ (using p
    Mysql在使用过程中,可能会遇到登录问题,比如常见的错误信息:“Accessdeniedforuser‘root’@‘localhost’(usingpassword:YES)”。本文将分析这个问题的可能原因,并提供一系列解决方案. 定位报错原因出现这个Accessdenied问题的原因有如下可能:MySQL的服务器停止了。......
  • ElasticSearch 备考 -- 备份和恢复
    一、题目备份集群下的索引task,存储快照名称为snapshot_1二、思考这个涉及的是集群的备份,主要是通过创建快照,涉及到以下2步骤Setp1:注册一个备份 snapshotrepositorySetp2:创建snapshot三、解题es支持多种方式,例如:亚马逊云、谷歌云存储、本地文件系统等。这里我们......
  • NODSX2304B. 抽卡
    NODSX2304B.抽卡题意改个名字,Alice和Bob在玩游戏……有\(n\le15\)个数字,每次玩家随机选择至多\(m\)个数,然后扔掉个数字。Alice先手。Alice会尽量使扔掉的权值和最大,Bob希望尽量小。问最终权值是什么。首先如果存在\(m\)张一定选\(m\)张,否则全选。然后想不到......
  • NODSX2304A. 铲雪
    NODSX2304A.铲雪给你一个序列,有\(m\)次操作,有两种。给区间\([l,r]\)的每个数字平方;询问区间\([l,r]\)每个数的倒数之和,对\(998244353\)取模。暴力模拟时间复杂度是\(O(n^2\logP)\)的。显然我们可以在一开始就对每个数取倒数,操作变成区间逐个平方和区间求和。暴......