Elasticsearch学习笔记(1)

目录

开始

Elasticsearch是一个高可扩展的、开源的、全文本搜索和分析的引擎。它允许你近乎实时地存储,检索和分析大量数据。它通常用作底层引擎/技术,为具有复杂搜索特性和需求的应用程序提供动力。

基本概念

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

实时

Elasticsearch是一个近乎实时检索平台。这意味着,从索引文档到可搜索文档,存在轻微的延迟(通常为一秒)。

集群

一个集群是一个或多个节点(服务器)的集合,这些节点一起保存你的整个数据,并提供垮所有节点的联合索引和搜索功能。集群由一个唯一的名称来表示,默认情况下该名称为"elasticsearch"。这个名称很重要,因为节点只能是集群的一部分,如果节点被设置为通过其名称加入节点的话。

确保你没有在不同的环境里使用重复的名称,否则你可能会把节点加入到错误的集群。请注意,如果集群只有一个节点,那么它是有效的,并且是很好的。此外,你可以有多个独立的集群,每个拥有自己的独立的集群名。

节点

一个节点是一个单独服务器是你的集群的一部分,存储你的数据,并且参与集群的索引和搜索功能。就像一个集群,一个节点是通过一个名称被识别的,默认是在安装时分配给节点的一个随机的UUID。如果你不想用默认的名称,你可以定义任何的节点名称。这个名称对于管理非常重要,因为您想要确定网络中的哪些服务器对应于Elasticsearch集群中的哪些节点。

可以通过集群名称配置一个节点加入特定的集群。默认情况下,每个节点都被设置为加入一个名为elasticsearch的集群,这意味着如果你在网络上启动多个节点——假设它们可以相互发现——它们将自动形成并加入一个名为elasticsearch的集群。

在一个单一集群,你可以拥有任意数量的节点。此外,如果您的网络上没有其他Elasticsearch节点当前正在运行,那么启动单个节点将默认形成一个新的称为Elasticsearch的单节点集群。

索引

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

在一个单一集群中,你可以定义任意个你想要的索引。

类型

在6.0弃用
一个类型过去是索引的逻辑类别/分区,允许你在同一索引中存储不同类型的文档,例如,一种类型用于用户,另一种类型用于博客文章。在索引中创建多个类型不再可能,类型的整个概念将在稍后的版本中删除。有关更多信息,请参见删除映射类型。

文档

一个文档是一个可以建立索引的基本单元。例如,你可以为单个客户提供一个文档,一个文档用于单个产品,另一个文档用于单个订单。文档是用JSON表示的,这是一种无处不在的互联网数据交换格式。

碎片和副本

索引可能存储大量数据,超出单个节点的硬件限制。例如,一个包含10亿个文档的索引占用了1TB的磁盘空间,它可能不适合于单个节点的磁盘,或者可能太慢,无法单独为单个节点提供搜索请求。

为了解决这个问题,Elasticsearch提供了将索引细分为多个碎片的功能。当你创建索引时,可以简单地定义你想要的碎片的数量。每个碎片本身都是一个功能齐全、独立的“索引”,可以驻留在集群中的任何节点上。

碎片之所以重要,有两个主要原因:

  • 它允许你水平地分割/缩放内容卷
  • 它允许你在碎片(可能在多个节点上)之间分发和并行化操作,从而提高性能/吞吐量

碎片如何分布以及如何将其文档聚合回搜索请求的机制完全由Elasticsearch管理,对用户来说是透明的。

在任何时候都可能出现故障的网络/云环境中,有一个故障转移机制是非常有用的,强烈建议在碎片/节点脱机或因任何原因消失的情况下使用该机制。为此,Elasticsearch允许你将索引碎片的一个或多个副本复制到所谓的复制碎片中,或简称为副本。

副本之所以重要,有两个主要原因:

  • 它提供了在碎片/节点失败时的高可用性。出于这个原因,需要注意的是,复本碎片从来不与它的原始/主碎片在同一个节点上分配。
  • 它允许你扩展搜索量/吞吐量,因为搜索可以在所有副本上并行执行。

总而言之,每个索引可以分成多个碎片。一个索引也可以被复制零次(意思是没有副本)或多次。一但复制,每个索引将具有主碎片(原始碎片)和复制碎片(主碎片的副本)。

在创建索引时,每个索引可以定义碎片和副本的数量。创建索引之后,还可以随时动态更改副本的数量。你可以使用_shrink_split api更改现有索引的碎片数量,但是这不是一项简单的任务,预先计划正确的碎片数量是最佳方法。

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

安装

Elasticsearch需要至少JAVA8环境。在安装Elasticsearch之前请检查你的Java环境版本

java -version

设置Java环境变量

下一章 —— Elasticsearch学习笔记(2)

你可能感兴趣的:(Elasticsearch学习笔记(1))