美文网首页
Elasticsearch5.x研究日记1:核心概念

Elasticsearch5.x研究日记1:核心概念

作者: 不迷失 | 来源:发表于2017-01-22 22:12 被阅读76次

Elasticsearch 以下简称ES,是一个高度可扩展的开源全文搜索和分析引擎。它允许您快速和近实时地存储,搜索和分析大量数据。它通常用作为具有复杂搜索功能和要求的应用程序提供支持的基础引擎/技术。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

我们建立一个网站或应用程序,并要添加搜索功能,令我们受打击的是:搜索工作是很难的。我们希望我们的搜索解决方案要快,我们希望有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP的索引数据,我们希望我们的搜索服务器始终可用,我们希望能够一台开始并扩展到数百,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。Elasticsearch旨在解决所有这些问题和更多的问题。

基本概念

有几个概念是Elasticsearch的核心。从一开始就理解这些概念将极大地帮助缓解学习过程。

近实时(NRT)

Elasticsearch是一个接近实时的搜索平台。这意味着从索引文档到它可搜索的时间有一个轻微的延迟(通常为1秒)。

集群

集群是一个或多个节点(服务器)的集合,它们一起保存您的整个数据,并在所有节点上提供联合索引和搜索功能。集群由唯一名称标识,默认情况下为“elasticsearch”。此名称很重要,因为如果节点设置为通过其名称加入集群,则节点只能是集群的一部分。

确保您不要在不同的环境中重复使用相同的集群名称,否则您最终可能会加入错误的集群。例如,你可以使用logging-dev,logging-stage以及logging-prod 用于开发,预发布和生产集群。

注意,有一个集群只有一个节点也是可以运行的的。此外,您可能还有多个独立的集群,每个集群都有自己唯一的集群名称。

节点

节点是作为集群一部分的单个服务器,存储您的数据,并参与集群的索引和搜索功能。就像一个集群,一个节点由一个名称标识,默认情况下是一个随机的通用唯一标识符(UUID),在启动时分配给该节点。如果不想使用默认值,可以定义任何所需的节点名称。此名称对于管理目的很重要,您希望确定网络中哪些服务器对应于Elasticsearch集群中的哪些节点。

可以将节点配置为通过集群名称加入特定集群。默认情况下,每个节点都设置了加入名为集群elasticsearch,这意味着,如果你启动多个节点在网络上和假设他们能够发现对方,他们都将自动成立和加入一个名为单个集群elasticsearch。

在单个集群中,您可以拥有任意数量的节点。此外,如果没有其他Elasticsearch节点当前运行在网络上,从单一的节点将在默认情况下形成一个新的名为单节点集群elasticsearch。

索引

索引是具有某些相似特征的文档的集合。例如,您可以拥有客户数据的索引,产品目录的另一个索引,以及订单数据的另一个索引。索引由名称(必须全部为小写)标识,并且此名称用于在对其中的文档执行索引,搜索,更新和删除操作时引用索引。

在单个集群中,您可以根据需要定义任意数量的索引。

类型

在索引中,您可以定义一个或多个类型。类型是您的索引的逻辑类别/分区,其语义完全由您决定。通常,为具有一组公共字段的文档定义类型。例如,假设您运行博客平台并将所有数据存储在一个索引中。在此索引中,您可以为用户数据定义类型,为博客数据定义另一种类型,并为注释数据定义另一种类型。

文档

文档是可以索引的信息的基本单位。例如,您可以为单个客户创建一个文档,为单个产品创建另一个文档,为单个订单创建另一个文档。本文档中所表达JSON(JavaScript对象符号),它是一种无处不在的互联网数据交换格式。

在索引/类型中,您可以存储任意数量的文档。请注意,尽管文档物理上驻留在索引中,但实际上文档必须索引/分配给索引中的类型。

分片及副本

索引可以潜在地存储可以超过单个节点的硬件限制的大量数据。例如,占用1TB磁盘空间的10亿个文档的单个索引可能不适合单个节点的磁盘,或者可能太慢,无法单独从单个节点提供搜索请求。

为了解决这个问题,Elasticsearch提供了将索引细分为多个称为分片的功能的能力。创建索引时,可以简单地定义所需的分片数。每个分片本身是一个完全功能和独立的“索引”,可以托管在集群中的任何节点上。

分片是重要的两个主要原因:

它允许您水平分割/缩放内容卷
它允许您跨分片(可能在多个节点上)分布和并行化操作,从而提高性能/吞吐量
碎片如何分布以及如何将其文档聚合回搜索请求的机制由Elasticsearch完全管理,并且作为用户对您是透明的。

在可以随时预期故障的网络/云环境中,这是非常有用的,强烈建议具有故障转移机制,以防shard /节点以某种方式脱机或由于某种原因而消失。为此,Elasticsearch允许您将索引的碎片的一个或多个副本转换为所谓的副本碎片(或简称副本)。

复制是重要的两个主要原因:

它在碎片/节点故障的情况下提供高可用性。因此,重要的是要注意,复制分片从不分配在与从其复制的原始/主分片相同的节点上。

它允许您扩展搜索量/吞吐量,因为搜索可以并行地在所有副本上执行。

总而言之,每个索引可以拆分成多个分片。索引也可以复制为零(意味着没有副本)或更多次。一旦复制,每个索引将具有主分片(从其复制的原始分片)和副本分片(主分片的副本)。可以在创建索引时为每个索引定义分片和副本的数量。创建索引后,您可以随时动态更改副本的数量,但不能在事后更改数量。

默认情况下,Elasticsearch中的每个索引都会分配5个主分片和1个副本,这意味着如果您的群集中至少有两个节点,那么您的索引将有5个主分片和5个副本分片(1个完整副本)每个索引10个碎片。

注意

每个Elasticsearch shard是一个Lucene索引。在一个Lucene索引中可以有最大数量的文档。作为LUCENE-5843,限制为2,147,483,519(= Integer.MAX_VALUE的- 128)的文档。您可以监视使用碎片大小_cat/shardsAPI。

相关文章

  • Elasticsearch5.x研究日记1:核心概念

    Elasticsearch 以下简称ES,是一个高度可扩展的开源全文搜索和分析引擎。它允许您快速和近实时地存储,搜...

  • Elasticsearch配置文件详解

    Elasticsearch核心配置文件详解 Elasticsearch5.X,下列的是Elasticsearch2...

  • 关于大概念

    研究大概念案例注意三点: 一、找到内容的核心概念和核心问题 二、理清围绕核心概念和核心问题如何拓展迁移 三、构建大...

  • 巴林特小组在中学教育教学中的应用研究1

    一、课题核心概念的界定,国内外研究现状述评,选题意义和研究价值,拟创新点 (一)核心概念:巴林特小组 巴林特小组由...

  • ElasticSearch5.x研究日记3:搜索数据

    前面了解了怎样向es中索引数据,这一切的最终目的是为了搜索数据。 为了很好的展示搜索,我们准备一些根据真实的数据。...

  • 教科研课题研究专题讲座 冯云

    一,开展课题研究的缘由 二,课题研究选题 科研选题误区 三,教师教育科研的论证设计 1.课题核心概念及其界定:选题...

  • 进阶学习6-装饰器/迭代器/生成器

    总结 描述备注函数核心概念1函数可以赋值给变量函数核心概念2函数可以作为参数传递函数核心概念3嵌套函数函数核心概念...

  • 前言

    研究的核心问题和研究对象 城市新旧要素复合形态的整合(整体化) 概念1:复合(新中有旧,旧中有新)就是融合共存,而...

  • 小学美术特色课程开发与实践的研究

    问题的提出,研究的价值(理论意义和实践意义);核心概念界定;国内外相关研究文献综述;研究目标,研究内容,研究的重点...

  • 课题话语体系札记

    课题专用语言,格式规范,论证严谨。 一、选题依据:1.核心概念界定2.国内外研究现状国外专家对本问题的研究,先综述...

网友评论

      本文标题:Elasticsearch5.x研究日记1:核心概念

      本文链接:https://www.haomeiwen.com/subject/mlwobttx.html