Elasticserach学习笔记-01基础概念
本文系本人根据官方文档的翻译,能力有限、水平一般,如果对想学习Elasticsearch的朋友有帮助,将是本人的莫大荣幸。
原文出处:https://www.elastic.co/guide/en/elasticsearch/reference/current/_basic_concepts.html
ElasticSearch有几个核心概念,了解它们将有助于我们的整个学习过程。
近乎实时(NRT)
Elasticsearch是一个近乎实时的搜索平台。这意味着从你为一个文档建立索引到该文档可被检索只有很小的时间差(通常是1秒)。
集群(Cluster)
群集是一个或多个节点(服务器)的集合,它们一起保存整个数据,并在所有节点上提供联合索引和搜索功能。一个集群由唯一的名称加以识别,默认为“elasticsearch”。此名称非常重要,因为一个节点(服务器)只能按(集群)的唯一名称加入集群。
请确保不要在不同的环境中使用相同的集群名称,否则节点可能会加入错误的集群。举例来讲,你可以使用 logging-dev, logging-stage, 以及logging-prod 分别作为开发,测试和生产环境的集群名称。
一个集群可以仅包含一个节点。而且你也可以设置多个不同的集群,每个集群都有自己唯一的名称。
节点(Node)
节点是作为集群的一台服务器,存储数据并参与集群的索引和搜索功能。和集群相似,节点是由名称标识的,在节点启动时被默认分配为随机的UUID(Universally Unique Identifier)。如果不想要默认名称,你可以给任意节点定义名称。该名称在管理你网络中的服务器对应哪个节点时起到很重要的作用。
一个节点可以被配置为加入带有特定名称的集群。默认情况下,每个节点都会加入名为elasticsearch的集群。也就是说,如果你启动了多个节点,并且假设它们之间是网络连通的,那么它们将自动组一个名为elasticsearch的集群。
在单一集群中,你可以拥有任意数量的节点。而且,如果当前没有其他ElasticSearch节点运行与你的网络,启动一个新节点将组建一个新的名为elasticsearch的单节点集群。
索引(Index)
索引是具有相似特性的文档集合。例如,可以为客户数据建立一个索引,产品目录用另一个索引,以及订单数据再建立一个索引。索引由名称(必须全部为小写)标识,该名称用于在对其中的文档执行索引、搜索、更新和删除操作时引用索引。
在一个集群中,你可以定义任意数量的索引。
类型(Type)
在索引中,你可以定义一或者多个类型。类型是索引的逻辑类别/分区,其语义完全取决于你。一般来说,类型定义为具有公共字段集的文档。例如,假设你运营一个博客平台,并将所有数据存储在一个索引中。在这个索引中,您可以定义用户数据的类型,博客数据的类型,以及注释数据的类型。
文档(Document)
文档是可被索引的最小单元。举例,你可以为一个客户创建一个文档,为一个产品创建另一个文档,为一个订单再创建一个文档。这个文档用JSON(JavaScript对象标记语言)表示,它是一种无处不在的Internet数据交换格式。
在一个索引或者类型中,你可以存储任意数量的文档。注意,一个文档物理上长存于索引中,而事实上也同时必须被指定一个索引中的类型。
碎片和复制品(Shards & Replicas)
索引可以存储大量的数据,这些数据可能超过单个节点的硬件限制。例如,占用磁盘空间1TB的含有十亿个文件的单个索引,可能不适合放单个节点的磁盘上。因为那将拖慢服务本身以至于无法响应外部的搜索请求。
为了解决这一问题,Elasticsearch提供了将索引分成多个块(称之为碎片)的能力。创建索引时,可以简单地定义你所需的碎片数。每个碎片本身是一个全功能的、独立的“索引”,可以被托管在集群中的任意节点。
分片之所以重要是因为两大原因:
1. 它允许你水平拆分/缩放内容卷
2. 它允许你跨分片地并行操作(可能在多个节点上)从而提高性能/吞吐量
分片的分布机制、以及分片上文档聚合后返回给检索请求完全由Elasticsearch管理,对于作为用户的你来说是完全透明的。
在网络/云计算环境中失败时有发生,分片/节点意外导致不可用时,拥有故障转移机制是非常有帮助且被告诉推崇的。为此,Elasticsearch可以将一或者多个所以的分片拷贝转化为副本分片,简称副本(replicas)。
副本的重要性主要有两大原因:
1. 它提高了分片/节点故障时的可用性。需要注意的是,副本分片永远不会和那个被它复制的原始/主分片分配在同一个节点上。(译者注:如果和主分片在同一个节点,当该节点故障副本节点也将不可用,便失去了副本的意义)
2. 它增大了搜索量/吞吐量,因为搜索可以在所有副本上并行执行。
总结:每个索引可以被拆分为多个分片。一个索引可以被复制0次(不复制)或者多次。一旦被复制,每个索引将会拥有主分片(原始的被复制的分片)和副本分片(从主分片复制而来的分片)。主分片及副本分片的数量可以在创建索引的时候指定。索引被创建后,你可以动态改变副本分片的数量,但是主分片的数量则不允许修改。
每个Elasticsearch中的每个索引被默认分配了5个主分片和一个副本(节点),也就是说如果在你的集群中有两个节点,那么你的索引将会有5个主分片和5个副本分片(一个完整副本)共计10个分片。
每个Elasticsearch分片是一个Lucene索引。 每个Lucene索引有个允许的包含的文档数量上限。截止
LUCENE-5843, 上限为 2,147,483,519 (= Integer.MAX_VALUE - 128) 。你可以使用_cat/shards
api来监视分片大小。
了解了基础概念之后,让我们开始接触有趣的部分吧…
Elasticserach学习笔记-01基础概念的更多相关文章
- Docker:学习笔记(1)——基础概念
Docker:学习笔记(1)——基础概念 Docker是什么 软件开发后,我们需要在测试电脑.客户电脑.服务器安装运行,用户计算机的环境各不相同,所以需要进行各自的环境配置,耗时耗力.为了解决这个问题 ...
- OpenFlow Switch学习笔记(一)——基础概念
OpenFlow Switch v1.4.0规范是在2013年10月14号发布,规范涵盖了OpenFlow Switch各个组件的功能定义.Controller与Switch之间的通信协议Open F ...
- 【miscellaneous】 GStreamer应用开发手册学习笔记之基础概念介绍
第3章. 基础概念介绍 本章将介绍GStreamer的基本概念. 理解这些概念对于你后续的学习非常重要,因为后续深入的讲解我们都假定你已经完全理解了这些概念. 3.1. 元件(Elements) 元件 ...
- PHP学习笔记01——基础语法
<!DOCTYPE html> <html> <?php // 1.使用$加变量名来表示变量,php是弱类型语言,不要求在使用变量前声明,第一次赋值时变量才被创建 $a ...
- JAVA学习笔记之基础概念(一)
一.Java 简介: Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 面向对象程序设计语言和 Java 平台的总称. 由 James Gosling和同 ...
- Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理
一.基础介绍 1.简介 一个基于GIT的源码托管解决方案 基于rubyonrails开发 集成了nginx postgreSQL redis sidekiq等组件 2.安装要求 2g内存以上,有点占内 ...
- C#学习笔记(基础知识回顾)之值类型和引用类型
一:C#把数据类型分为值类型和引用类型 1.1:从概念上来看,其区别是值类型直接存储值,而引用类型存储对值的引用. 1.2:这两种类型在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管对上.存 ...
- Quartz学习笔记:基础知识
Quartz学习笔记:基础知识 引入Quartz 关于任务调度 关于任务调度,Java.util.Timer是最简单的一种实现任务调度的方法,简单的使用如下: import java.util.Tim ...
- C++ GUI Qt4学习笔记01
C++ GUI Qt4学习笔记01 qtc++signalmakefile文档平台 这一章介绍了如何把基本的C++只是与Qt所提供的功能组合起来创建一些简单的图形用户界面应用程序. 引入两个重要概 ...
随机推荐
- 1349: [Baltic2006]Squint
1349: [Baltic2006]Squint Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 427 Solved: 248[Submit][Stat ...
- 1754: [Usaco2005 qua]Bull Math
1754: [Usaco2005 qua]Bull Math Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 398 Solved: 242[Submit ...
- 文件File
前面的话 不能直接访问用户计算机中的文件,一直都是Web应用开发中的一大障碍.2000年以前,处理文件的唯一方式就是在表单中加入<input type="file">字 ...
- jQuery遮罩插件 jquery.blockUI.js
Overview jQuery BlockUI 插件可以在不同锁定浏览器的同时,模拟同步模式下发起Ajax请求的行为.该插件激活时,会组织用户在页面进行的操作,直到插件被关闭.BlockUI通过向DO ...
- 浅谈EL
一.了解EL 1.EL是从 JavaScript 脚本语言得到启发的一种表达式语言,它借鉴了 JavaScript 多类型转换无关性的特点.在使用 EL 从 scope 中得到参数时可以自动转换类型, ...
- Java中Comparable和Comparator你知多少?
前言: 我喜欢这种遨游在Java的世界里,精心研究学习新鲜事物的感觉,即便再小再细再微不足道的东西,也让我乐此不疲,同时我也更愿意将我所会的东西分享出来供大家学习以及方便自己日后回顾.好了,闲话不多说 ...
- Struts2之标签使用
上一篇我们一起探讨了Struts2中的OGNL表达式的知识,本篇我们一起来学习一下关于Struts2标签的使用,包括:基础标签:property.set.bean.include:判断标签:if el ...
- Android开发之音乐播放器
做了一天的音乐播放器小项目,已经上传到github,将链接发到这里供大家参阅提议 https://github.com/wangpeng0531/MusicPlayer.git
- WPF实用小工具
Kaxaml 一款轻量级的Xaml代码编辑器,提供了可视的效果可以看到修改代码后的实时效果图.个人习惯于用它测试系统默认控件的行为和布局,小片段的xaml也可以拿到这个工具上测试效果.这款工具还提供了 ...
- Gson和Json
一下内容为复制别人的: Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库.可以将一个 JSON 字符串转成一个 Java 对象,或者反过来. j ...