首页 > 其他分享 >上手ElasticSearch必须了解的核心概念

上手ElasticSearch必须了解的核心概念

时间:2023-09-27 10:38:14浏览次数:25  
标签:副本 核心 上手 索引 ElasticSearch 分片 文档 Type ES




上手ElasticSearch必须了解的核心概念_数据


ElasticSearch概述

ElasticSearch(简称 ES) 是一个分布式的使用 REST 接口的搜索引擎,属于非关系型数据库。它是在 lucene 的基础上进行研发的,隐藏了 lucene 的复杂性,提供简单易用的 RESTful Api接口。ES 的分片相当于 lucene 的索引。ES属于Elastic 公司,该公司同时拥有 Logstash 及 Kibana。这个三个项目组合在一起,就是大名鼎鼎的 ELK 。简单地说,Logstash 负责数据的采集,处理,Kibana 负责数据展示,分析,管理,监督及应用。ES 是ELK的核心,它可以帮我们对数据进行快速地搜索及分析,本文将对ElasticSearch的核心概念做重点介绍,来帮助刚刚上手ES的同学快速入门。ES、Logstash以及Kibana三者的关系如下图所示:


上手ElasticSearch必须了解的核心概念_服务器_02


文档(Document)

ES是面向文档的,文档是所有可搜索数据的最小单位。

以下内容都属于文档

  • 日志文件中日志项
  • 一首歌、一篇 PDF 文档、一个网页
  • 一条订单数据

分片(Shard)

由于单台机器无法存储大量数据,ES 可以将一个索引中的数据切分为多个分片(Shard),分布在多台服务器上存储。有了分片就可以横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上去执行,提升吞吐量和性能。

分片分为主分片(Primary Shard)和副本分片(Replica Shard)。

主分片主要用以解决水平扩展的问题,通过主分片,就可以将数据分布到集群上的所有节点上,一个主分片就是一个运行的 Lucene 实例,当我们在创建 ES 索引的时候,可以指定分片数。

副本分片用以解决数据高可用的问题,也就是说集群中有节点出现硬件故障的时候,通过副本的方式,也可以保证数据不会产生真正的丢失,因为副本分片是主分片的拷贝,在索引中副本分片数可以动态调整,通过增加副本数,可以在一定程度上提高服务查询的性能。

索引(Index)

索引简单来理解就是结构文档的集合,一个索引就代表了一类类似的或者相同的文档,建立一个用户索引,里面可能就存放了所有的用户数据,也就是所有的用户文档。在一个索引中包括: Mapping 和 Setting,Mapping 定义的是索引当中所有文档字段的类型结构,Setting 主要是指定要用多少的分片以及数据是怎么样进行分布的。

映射(Mapping)

类似于关系数据库中的表定义

字段(Field)

类似于关系数据库中的字段(column)

类型(Type)

在 ES 7.0 之前,每一个索引是可以设置多个 Types。例如一个短视频系统,一个索引,可以定义用户数据 Type,短视频数据 Type,评论数据 Type 等。从 7.0 开始,一个索引只能创建一个 Type

节点(Node)

节点其实就是一个 ES 实例,本质上是一个 Java 进程,一台机器上可以运行多个 ES 进程,但是生产环境一般建议一台机器上只运行一个 ES 实例。

文档和索引以及节点和分片的关系

索引和文档是偏向于逻辑上的概念,节点和分片更偏向于物理上的概念。


上手ElasticSearch必须了解的核心概念_服务器_03


集群(Cluster)

ES 通过集群保证高可用,一个集群中可以有一个或者多个节点,用三种颜色来表示集群健康程度:

  • Green:主分片与副本都正常分配
  • Yellow:主分片全部正常分配,有副本分片未能正常分配
  • Red:有主分片未能分配(例如,当服务器的磁盘容量超过 85% 时,去创建了一个新的索引)

下图就是一个基础的ES集群,可以看到shard 和其对应的replica都保存在不同的node上,这样保证了一个node不可用,另一个node可以正常工作。


上手ElasticSearch必须了解的核心概念_大数据_04


REST API

可以通过REST API来对ES进行增删改查相关操作


上手ElasticSearch必须了解的核心概念_服务器_05


具体rest api链接如下:

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


上手ElasticSearch必须了解的核心概念_服务器_06


ES和RDBMS区别

区别如下图:


上手ElasticSearch必须了解的核心概念_Powered by 金山文档_07


备注:从 7.0 开始,一个索引只能创建一个 Type。

标签:副本,核心,上手,索引,ElasticSearch,分片,文档,Type,ES
From: https://blog.51cto.com/liwen629/7621145

相关文章

  • 详解分布式系统核心概念——CAP、CP和AP
    最近研究Sykwalking,当调研oap如何进行集群部署时发现:skywalkingoap之间本身不能搭建集群,需要一个集群管理器来组建集群,它支持nacos、zookeeper、Kubernetes、Consul、Etcd五种集群管理器。我重点比较了nacos和zookeeper,发现二者最大的区别是Zookeeper采用了CP架构,nacos既支持CP......
  • 一文搞定Pandas核心概念之Series
    Pandas概述Pandas是Python语言的一个扩展程序库,他是一个强大的分析结构化数据的工具集,基础是Numpy,用于数据分析。安装Pandas命令:pipinstallpandasPandas的主要数据结构是Series(一维数据)与DataFrame(二维数据),Series是一种类似于一维数组的对象,它由一组数据(各种Numpy数据......
  • 一文搞定Pandas核心概念之DataFrame
     DataFrame概述DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共同用一个索引)。如下图所示:整个表格是DataFrame,每一列就是一个Series。关于Series可以参考文......
  • 测试技能提升篇——一文理解消息中间件里那些通用的核心概念
    我们测试同学在实际工作中或多或少都会接触过ActiveMQ、RabbitMQ,Kafka,和RocketMQ这类消息中间件产品,不同的公司会选择不同的产品,大家可能会觉得产品比较多,了解起来有些复杂!其实无论使用哪种中间件产品,他们的核心功能都是比较类似的。本文就不来汇总一下中间件产品的核心概念,给大家......
  • 测试技能提升篇——Docker的核心概念
    Docker已经不是什么新技术了,相信绝大多数同学在实际工作中都会对其有一定的了解,使用一些常用的命令行执行一些操控容器的基础操作,这方便的网络资源实现太多了,在这里就不进行相关讲解了。本文重点介绍一下涉及Docker的相关概念以及其核心组件的作用,相信会帮助想要深入研究Docker的同......
  • 包管理工具 - yarn 的核心命令
    yarn的核心命令初始化初始化:yarninit[--yes/-y]安装添加指定包:yarn[global]addpackage-name[--dev/-D][--exact/-E]安装package.json中的所有依赖:yarninstall[--production/--prod]脚本和本地CLI运行脚本:yarnrun脚本名start、stop、test可以省略run......
  • Hadoop是什么? Hadoop是一个由Apache开发的开源分布式计算框架,它能够处理大规模数据并
    Hadoop是什么?Hadoop是一个由Apache开发的开源分布式计算框架,它能够处理大规模数据并行处理任务,支持大规模数据存储和处理。Hadoop的核心组件包括分布式文件系统HDFS和分布式计算框架MapReduce,它们使得Hadoop可以在廉价的硬件上并行地处理大量数据。Hadoop还包括很多相关的项目和子......
  • 开发同城O2O外卖系统源码:外卖跑腿小程序的核心功能
    随着移动互联网的快速发展,外卖行业迎来了巨大的机遇。O2O(Online to Offline)模式逐渐崭露头角,而同城外卖跑腿小程序成为了这一领域的热门选择。 第一部分:简介简单涞水,外卖跑腿平台是一种允许用户在同城范围内订购食物、货物或服务的应用程序。那么,想要开发一个同城O2O外卖系统,您......
  • window下elasticsearch修改密码
    es默认是没有密码的,但是为了安全起见,线上正式环境还是要设置密码进入elasticsearch解压包目录中找到elasticsearch.YML文件,打开,直接在最后添加,这里记得,每个属性冒号后面都需要tab键一个空格xpack.security.enabled:truexpack.license.self_generated.type:basicxpack.security......
  • Cobra眼睛蛇-强大的Golang CLI框架,快速上手的脚手架搭建项目工具,详细安装和使用
    Cobra眼睛蛇-强大的GolangCLI框架,快速上手的脚手架搭建项目工具,详细安装和使用。阅读过k8s源码的同学,应该都知道k8sScheduler、kubeadm、kubelet等核心组件的命令行交互全都是通过spf13写的Cobra库来实现。本文就来介绍下Cobra的相关概念及具体用法。关于Cobra是一个用于Go的CLI......