【Elasticsearch】Elasticsearch 从入门到精通(一):基本介绍

Elasticsearch 从入门到精通(一):基本介绍

  • 1.Elasticsearch
  • 2.Elasticsearch 使用案例
  • 3.Elasticsearch 对比 Solr
  • 4.Elasticsearch 基本概念及架构
    • 4.1 Elasticsearch 基本概念
      • 4.1.1 索引 index
      • 4.1.2 映射 mapping
      • 4.1.3 字段 Field
      • 4.1.4 类型 Type
      • 4.1.5 文档 document
      • 4.1.6 集群 cluster
      • 4.1.7 节点 node
      • 4.1.8 分片和副本 shards & replicas
        • 4.1.8.1 分片
        • 4.1.8.2 副本
    • 4.2 Elasticsearch 基本架构

在这里插入图片描述

1.Elasticsearch

Elasticsearch 是一个基于 Apache Lucene 的 开源搜索引擎。无论在开源还是专有领域,Lucene 可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。

特点:

  • 分布式的实时文件存储,每个字段都被索引并可被搜索
  • 分布式的实时分析搜索引擎 —— 做不规则查询
  • 可以扩展到上百台服务器,处理 PB 级结构化或非结构化数据

Elasticsearch 也使用 Java 开发,并使用 Lucene 作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的 RESTful API 来隐藏 Lucene 的复杂性,从而让全文搜索变得简单。

ES 能做什么?

  • 全文检索(全部字段)
  • 模糊查询(搜索)
  • 数据分析(提供分析语法,例如聚合)

2.Elasticsearch 使用案例

  • 2013 年初,GitHub 抛弃了 Solr,采取 Elasticsearch 来做 PB 级的搜索。“GitHub 使用 Elasticsearch 搜索 20TB 的数据,包括 13 亿文件和 1300 亿行代码”。
  • 维基百科:启动以 Elasticsearch 为基础的核心搜索架构。
  • 百度:百度目前广泛使用 Elasticsearch 作为文本数据分析,采集百度所有服务器上的各类指标数据及用户自定义数据,通过对各种数据进行多维分析展示,辅助定位分析实例异常或业务层面异常。目前覆盖百度内部 20 多个业务线(包括 casio、云分析、网盟、预测、文库、直达号、钱包、风控等),单集群最大 100 台机。
  • 新浪 使用 ES 分析处理 32 亿条实时日志。
  • 阿里 使用 ES 构建挖财自己的日志采集和分析体系。

3.Elasticsearch 对比 Solr

  • Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能。
  • Solr 支持更多格式的数据,而 Elasticsearch 仅支持 json 文件格式。
  • Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供。
  • Solr 在传统的搜索应用中表现好于 Elasticsearch,但在处理实时搜索应用时效率明显低于 Elasticsearch。

4.Elasticsearch 基本概念及架构

4.1 Elasticsearch 基本概念

4.1.1 索引 index

  • 一个 索引 就是一个拥有几分相似特征的文档的集合。比如说,可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。
  • 一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对对应于这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。
  • 在一个集群中,可以定义任意多的索引。

4.1.2 映射 mapping

  • Elasticsearch 中的 映射(Mapping)用来定义一个文档。
  • Mapping 是处理数据的方式和规则方面做一些限制,如某个字段的数据类型、默认值、分析器、是否被索引等等,这些都是映射里面可以设置的。

4.1.3 字段 Field

  • 相当于是数据表的 字段,对文档数据根据不同属性进行的分类标识。

4.1.4 类型 Type

  • 每一个字段都应该有一个对应的 类型,例如:Text、Keyword、Byte 等。

4.1.5 文档 document

一个 文档 是一个可被索引的基础信息单元。比如,可以拥有某一个客户的文档,某一个产品的一个文档,当然,也可以拥有某个订单的一个文档。文档以 JSON(Javascript Object Notation)格式来表示,而 JSON 是一个到处存在的互联网数据交互格式。

4.1.6 集群 cluster

  • 一个 集群 就是由一个或多个节点组织在一起,它们共同持有整个的数据,并一起提供索引和搜索功能。
  • 一个集群由一个唯一的名字标识,这个名字默认就是 elasticsearch
  • 这个名字是重要的,因为一个节点只能通过指定某个集群的名字,来加入这个集群。

4.1.7 节点 node

  • 一个 节点 是集群中的一个服务器,作为集群的一部分,它存储数据,参与集群的索引和搜索功能。
  • 一个节点可以通过配置集群名称的方式来加入一个指定的集群。默认情况下,每个节点都会被安排加入到一个叫做 elasticsearch 的集群中。
  • 这意味着,如果在网络中启动了若干个节点,并假定它们能够相互发现彼此,它们将会自动地形成并加入到一个叫做 elasticsearch 的集群中。
  • 在一个集群里,可以拥有任意多个节点。而且,如果当前网络中没有运行任何 Elasticsearch 节点,这时启动一个节点,会默认创建并加入一个叫做 elasticsearch 的集群。

4.1.8 分片和副本 shards & replicas

4.1.8.1 分片
  • 一个索引可以存储超出单个结点硬件限制的大量数据。比如,一个具有 10 亿文档的索引占据 1TB 的磁盘空间,而任一节点都没有这样大的磁盘空间;或者单个节点处理搜索请求,响应太慢。
  • 为了解决这个问题,Elasticsearch 提供了将索引划分成多份的能力,这些份就叫做分片。
  • 当创建一个索引的时候,可以指定你想要的分片的数量。
  • 每个分片本身也是一个功能完善并且独立的“索引”,这个“索引”可以被放置到集群中的任何节点上。
  • 分片很重要,主要有两方面的原因:
    • 允许水平分割 / 扩展你的内容容量。
    • 允许在分片之上进行分布式的、并行的操作,进而提高性能 / 吞吐量。
  • 至于一个分片怎样分布,它的文档怎样聚合回搜索请求,是完全由 Elasticsearch 管理的,对于作为用户来说,这些都是透明的。
4.1.8.2 副本
  • 在一个网络 / 云的环境里,失败随时都可能发生,在某个分片 / 节点不知怎么的就处于离线状态,或者由于任何原因消失了,这种情况下,有一个故障转移机制是非常有用并且是强烈推荐的。为此目的,Elasticsearch 允许你创建分片的一份或多份拷贝,这些拷贝叫做副本分片,或者直接叫副本。
  • 副本之所以重要,有两个主要原因:
    • 在分片 / 节点失败的情况下,提供了高可用性。注意到复制分片从不与原 / 主要(original / primary)分片置于同一节点上是非常重要的。
    • 扩展搜索量 / 吞吐量,因为搜索可以在所有的副本上并行运行。
  • 每个索引可以被分成多个分片。一个索引有 0 个或者多个副本。
  • 一旦设置了副本,每个索引就有了主分片和副本分片,分片和副本的数量可以在索引创建的时候指定。
  • 在索引创建之后,可以在任何时候动态地改变副本的数量,但是不能改变分片的数量。

4.2 Elasticsearch 基本架构

在这里插入图片描述

  • Gateway 是 ES 用来存储索引的文件系统,支持多种类型。
  • Gateway 的上层是一个分布式的 Lucene 框架
  • Lucene 之上是 ES 的模块,包括:索引模块搜索模块映射解析模块 等。
  • ES 模块之上是 Discovery、Scripting 和第三方插件。
    • Discovery 是 ES 的节点发现模块,不同机器上的 ES 节点要组成集群需要进行消息通信,集群内部需要选举 master 节点,这些工作都是由 Discovery 模块完成。支持多种发现机制,如 Zen 、EC2、gce、Azure。
    • Scripting 用来支持在查询语句中插入 Javascript、Python 等脚本语言,Scripting 模块负责解析这些脚本,使用脚本语句性能稍低。ES 也支持多种第三方插件。
  • 再上层是 ES 的 传输模块JMX。传输模块支持多种传输协议,如 Thrift、Memecached、HTTP,默认使用 HTTP。JMX 是 Java 的管理框架,用来管理 ES 应用。
  • 最上层是 ES 提供给用户的 接口,可以通过 RESTful 接口和 ES 集群进行交互。

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

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

相关文章

基于SkyEye运行Qt:著名应用程序开发框架

Qt是一个著名的跨平台的C图形用户界面应用程序开发框架,目前包括Qt Creator、Qt Designer等等快速开发工具,还支持2D/3D图形渲染、OpenGL,允许真正的组件编程,是与GTK、MFC、OWL、ATL一样的图形界面库。使用Qt开发的软件可以做到一…

【cygwin】工具安装apt-cyg

目录 下载安装查看是否安装成功安装软件 下载 git clone https://github.com/transcode-open/apt-cyg.git安装 cd apt-cyg mv apt-cyg /usr/local/bin/ 查看是否安装成功 apt-cyg --help安装软件 apt-cyg install nano

C++:模板详解

模板详解 1.函数模板1.概念2.语法3.原理4.实例化1.隐式实例化2.显示实例化 5.匹配原则 2.类模板1.格式2.实例化 3.非类型模板参数注意点 4.特化1.概念2.函数模板特化1.前提2.语法说明3.示例 3.类模板特化1.全特化2.偏特化/半特化3.选择顺序 4.按需实例化 5.模板的分离编译1.分离…

lementui el-menu侧边栏占满高度且不超出视口

做了几次老是忘记,这次整理好逻辑做个笔记方便重复利用; 问题:elementui的侧边栏是占不满高度的;但是使用100vh又会超出视口高度不美观; 解决办法: 1.获取到侧边栏底部到视口顶部的距离 2.获取到视口的高…

运行django

确保app被注册 urls.py中编写url 视图对应关系 命令行启动 python manage.py runserver

Bootstrap 5 保姆级教程(十一):模态框 提示框

一、模态框 1.1 创建模态框 以下实例创建了一个简单的模态框效果 &#xff1a; <div class"container mt-3"><h3>模态框实例</h3><p>点击按钮打开模态框</p><button type"button" class"btn btn-primary" d…

有哪些网站设计教程

网站设计教程是帮助人们学习如何设计和开发网站的资源&#xff0c;它们提供了从基础知识到高级技巧的全方位指导。无论您是初学者还是经验丰富的开发者&#xff0c;都可以从这些教程中获益。下面是一些广受欢迎的网站设计教程&#xff0c;它们涵盖了各种技术和工具&#xff1a;…

轻量级SQLite可视化工具Sqliteviz

什么是 Sqliteviz &#xff1f; Sqliteviz 是一个单页面离线优先的渐进式网络应用&#xff08;PWA&#xff09;&#xff0c;用于完全客户端的 SQLite 数据库或 CSV 文件的可视化。 所谓完全客户端&#xff0c;就是您的数据库永远不会离开您的计算机。使用 sqliteviz&#xff0c…

2024 抖音欢笑中国年之渲染技术实践与探索

SAR Creator是一款基于 Typescript 的高性能、轻量化的互动解决方案&#xff0c;目前支持了浏览器和跨端框架平台&#xff0c;服务于字节内部的各种互动业务。 前言 抖音在2024年春节期间推出了欢笑中国年系列活动&#xff0c;为用户带来了全新的体验和乐趣。而SAR Creator则为…

01 MySQL--概念、三范式、表、字段设计方法与规范

1. 定义 1.1 SQL的分类 DQL - 数据查询语言&#xff08;Data Query Language, DQL&#xff09;负责进行数据查询而不会对数据本身进行修改的语句。 SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY。DDL - 数据定义语言 (Data Definition Language, DDL) 负责数据结构定义与…

【RV1106的ISP使用记录之基础知识】硬件连接关系与设备树的构建

RV1106具备2个mipi csi2 dphy硬件&#xff0c;1个VICAP硬件和1个ISP硬件。其中&#xff1a; 1、mipi csi2 dphy 用于对数据流的解析&#xff0c;支持MIPC,LVDS,DVP三种接口&#xff1b; 2、VICAP用于数据流的捕获&#xff1b; 3、ISP用于对图像数据进行处理&#xff1b; 这三个…

文件夹变白之谜:原因、恢复与防范之道

在日常电脑使用中&#xff0c;我们有时会遇到一些文件夹突然变成白色文件的情况。这些文件夹看起来就像失去了原有的属性&#xff0c;无法被正常打开或访问。这种情况往往让人感到困惑和焦虑&#xff0c;因为文件夹中可能存储着重要的数据和信息。那么&#xff0c;文件夹为何会…

匿名对象 与 new delet初识

一.匿名对象 1.定义&#xff1a; 没有名称的临时创建的对象&#xff0c;通常用于临时操作或作为函数的实参或返回值。 2.声明周期与作用域&#xff1a; 仅仅在定义所在代码行中&#xff0c;执行完就销毁。 3.使用格式 类名(构造参数) 4.使用场景 临时调用成员函数 mid…

MapReduce 机理

1.hadoop 平台进程 Namenode进程: 管理者文件系统的Namespace。它维护着文件系统树(filesystem tree)以及文件树中所有的文件和文件夹的元数据(metadata)。管理这些信息的文件有两个&#xff0c;分别是Namespace 镜像文件(Namespace image)和操作日志文件(edit log)&#xff…

书生浦语大模型实战训练营--第二期第六节--Lagent AgentLego 智能体应用搭建--homework

一、基础作业 1.完成 Lagent Web Demo 使用&#xff0c;并在作业中上传截图 根据以下命令启动成功&#xff01; 2.完成 AgentLego 直接使用部分&#xff0c;并在作业中上传截图 这是原图 使用AgentLego进行自动目标检测后&#xff0c;很明显图中的物体已经被识别出来了 二、…

【python】如何通过python来发邮件,各种发邮件方式详细解析

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

MQ技术选型

消息队列中间件是分布式系统中重要的组件&#xff0c;主要解决应用耦合、异步消息、流量削锋等问题。它可以实现高性能、高可用、可伸缩和最终一致性架构&#xff0c;是大型分布式系统不可缺少的中间件。 RabbitMQ 特点&#xff1a; RabbitMQ 相当轻量级的消息队列&#xff…

英伟达一系列高质量公开课来了!

B站&#xff1a;啥都会一点的研究生公众号&#xff1a;啥都会一点的研究生 英伟达免费提供许多自学课程&#xff0c;评价肥肠高&#xff0c;有专为初学者设计的也有更进阶的内容&#xff08;提供证书&#xff09;&#xff0c;若实验室/单位基于NVIDIA Jetson进行开发&#xff…

Junit 更多-ApiHug准备-测试篇-010

&#x1f917; ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱&#xff0c;有温度&#xff0c;有质量&#xff0c;有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace 如果大家…

VisualGLM-6B的部署步骤

对于如下命令&#xff0c;你将完全删除环境和环境中的所有软件包 conda remove -n env_name --all 一、VisualGLM-6B环境安装 1、硬件配置 操作系统&#xff1a;Ubuntu_64&#xff08;ubuntu22.04.3&#xff09; GPU&#xff1a;4050 显存&#xff1a;16G 2、配置环境 建…