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

news2024/12/24 21:41:03

Elasticsearch 从入门到精通》共包含以下 2 2 2 篇文章:

  • 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.coloradmin.cn/o/1617344.html

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

相关文章

c语言应用,三子棋游戏设计

在c语言中,若是要实现三子棋游戏,需要我们对c语言的一维和二维数组的使用,函数的声明和调用,以及循环语句分支语句的结合等,这些知识的贯通。 首先,在设计游戏前我们要知道一下三子棋游戏的规则&#xff0…

NXopen c++快速分割体

通过对话框选择体以及分割该体的面,实现体的分割,相关资源请访问下载我的资源分享(上传需要时间审核) NXOpen::Session* theSession NXOpen::Session::GetSession();NXOpen::Part* workPart(theSession->Parts()->Work());…

【Linux学习】初始冯诺漫体系结构

文章目录 认识冯诺依曼系统 认识冯诺依曼系统 什么是冯诺依曼体系结构? 冯诺依曼体系结构是一种将程序指令和数据以二进制形式存放在主存储器中,由中央处理器统一控制和执行的计算机系统结构。冯诺依曼体系结构实现了程序的可编程性和硬件与软件的分离&…

mmdeploy框架转化模型

文章目录 1 从源码编译1.1 安装onnxruntime后端1.2 build mmdeploy1.3 install model converter 2 模型转换2.1 deploy用法2.2 示例 1 从源码编译 参考链接 reference2 git clone -b main https://github.com/open-mmlab/mmdeploy.git --recursive cd mmdeploy1.1 安装onnxru…

计算机缺少msvcp120.dll如何解决,7种详细的修复方法分享

msvcr120.dll文件是微软Visual C运行时库的一部分,版本号为12.0。这个DLL文件包含了许多用于支持在Windows上运行的应用程序的重要函数和组件。它是确保某些程序能够正确执行的关键组成部分,特别是那些使用C编写或依赖于某些Microsoft库的程序。 当用户…

C++ | Leetcode C++题解之第44题通配符匹配

题目&#xff1a; 题解&#xff1a; class Solution { public:bool isMatch(string s, string p) {auto allStars [](const string& str, int left, int right) {for (int i left; i < right; i) {if (str[i] ! *) {return false;}}return true;};auto charMatch []…

4月18号总结

java学习 网络编程 1.网络分层 网络分层是将网络通信划分为不同的逻辑层次&#xff0c;每一层负责特定的功能&#xff0c;从而实现网络通信的模块化和标准化。常用的网络分层模型包括OSI&#xff08;开放系统互联&#xff09;模型和TCP/IP模型。 特点和作用&#xff1a; 分…

(C++) 树状数组

目录 一、介绍 二、一维树状数组 2.1 区间长度 2.2 前驱和后继 2.3 查询前缀和 2.4 点更新 三、一维数组的实现 3.1 区间长度函数 3.2 前缀和 3.3 插入/更新 3.4 封装成类 一、介绍 树状数组&#xff08;Binary Indexed Tree&#xff0c;BIT&#xff09;&#xff0c;又称为 …

火绒安全概述

页面简介&#xff1a; 火绒安全是一款集多种安全功能于一体的国产软件&#xff0c;旨在为用户提供全面的计算机保护。本页面将详细介绍火绒安全的核心功能和使用方式。 页面内容概览&#xff1a; 杀毒防护 实时监控&#xff1a;详细介绍火绒安全如何实时检测系统中的文件和程序…

Pyside6:Spacer的使用,布局中控件顶格添加

在普通的布局&#xff0c;如水平或纵向布局中&#xff0c;我们的控件都会保持中间状态&#xff0c;如下&#xff1a; 但有许多情况下 &#xff0c;我们需要将控件布局为如下界面&#xff1a; 在前端开发时&#xff0c;我们很容易通过flex来进行布局&#xff0c;修正它的居中或者…

Github首页美化(updating)

Github首页美化 https://github.com/QInzhengk一、新建仓库二、美化Github首页主页访问量统计仓库状态统计常用语言占比统计社交链接 界面展示 https://github.com/QInzhengk 一、新建仓库 对Github首页进行美化&#xff0c;需要新建一个仓库名和自己 Github 用户名相同的仓库…

【数据库】三、数据库SQL语言命令(基础从入门到入土)

【全文两万多字&#xff0c;涵盖大部分常见情况&#xff0c;建议点赞收藏】 目录 文章目录 目录安装SQL语言1.使用2.DATABASE查看所有库新建数据库修改数据库删除数据库连接数据库 3.TABLE创建表查看库所有表删除表查看表信息重命名表修改表字段&#xff08;列&#xff09;表中…

Java---ideaIU-2023.1专业版使用以及安装方法

介绍 JetBrains 是一家专注于创建智能开发工具的前沿软件公司,包括:行业中领头的 Java IDE – IntelliJ IDEA,以及 Kotlin 编程语言。旗下常用的软件有IntelliJ IDEA、PhpStorm、RubyMine、Rider、WebStorm、goland、CLion、Pycharm&#xff0c;本安装包集成以上8款软件&#…

最大层内元素和

题目链接 最大层内元素和 题目描述 注意点 返回层内元素之和 最大 的那几层&#xff08;可能只有一层&#xff09;的层号&#xff0c;并返回其中 最小 的那个树中的节点数在 [1, 10000]范围内-10^5 < Node.val < 10^5 解答思路 广度优先遍历树&#xff0c;使用队列存…

windows系统CUDA的详细安装教程

CUDA系列 文章目录 CUDA系列前言一、CUDA简介二、安装配置视频教程三、CUDA的下载及安装3.1 环境检查3.2 CUDA 安装包下载3.3 安装CUDA&#xff08;略&#xff09;3.4 验证CUDA是否安装成功 四、cuDNN的下载及安装4.1 cuDNN下载4.2 cuDNN配置 五、配置环境变量六、下载并配置zl…

Day4 商品管理

Day4 商品管理 这里会总结构建项目过程中遇到的问题&#xff0c;以及一些个人思考&#xff01;&#xff01; 学习方法&#xff1a; 1 github源码 文档 官网 2 内容复现 &#xff0c;实际操作 项目源码同步更新到github 欢迎大家star~ 后期会更新并上传前端项目 编写品牌服务 …

LangChain入门指南:构建高可复用、可扩展的LLM应用程序 PDF书籍分享

今天又来给大家推荐一本大模型方面的书籍<Langchain入门指南>这本书专门为那些对自然语言处理技术感兴趣的读者提供了系统的LLM应用开发指南。全书分为11章&#xff0c;从LLM基础知识开始&#xff0c;通过LangChain这个开源框架为读者解读整个LLM应用开发流程。 下载当前…

轻松记录收支明细,详细记录每一笔收支,通过借款日期快速查找借款信息

财务管理对于个人和企业来说都至关重要。一份清晰、详尽的收支明细记录&#xff0c;不仅能帮助我们了解资金流向&#xff0c;还能在需要时提供有力的证据。因此&#xff0c;高效记录收支明细并轻松掌握财务状况成为了每个人的必备技能 第一步进入晨曦记账本主页面&#xff0c;…

ros2_control【B站WMGIII教学学习记录】1

资源 https://www.bilibili.com/video/BV1ku411G7UR? 学习过程中存在bug&#xff0c;记录一下 1 Q:"package ‘joint_state_publisher_gui’ not found, searching: [/home A: sudo apt install ros-humble-joint-state-publisher2 https://fishros.org.cn/forum/to…

抢先看!LEADTOOLS V23 全新版发布,预览全新产品线布局!

LEADTOOLS (Lead Technology)由Moe Daher and Rich Little创建于1990年&#xff0c;其总部设在北卡罗来纳州夏洛特。LEAD的建立是为了使Daher先生在数码图象与压缩技术领域的发明面向市场。在过去超过30年的发展历程中&#xff0c;LEAD以其在全世界主要国家中占有的市场领导地位…