NRT(近实时搜索)

Elasticsearch是一个NRT平台。这意味着当你索引一个文件时,在细微的延迟(通常1s)之后,该文件才能被搜索到。

Cluster(集群)

cluster是在所有节点中保存全部数据且提供联合索引和搜索功能的一个或多个节点(服务器)的集合。

每个cluster有唯一的名称,默认为”elasticsearch”。该名称很重要,因为如果节点通过cluster名称加入cluster,那么该节点就只能成为该cluster的一部分。确保在不同环境中不重复使用相同的cluster名称,除非节点加入了错误的cluster。

举例,对development、stage和production集群分别使用logging-dev、logging-stage和logging-prod。

注意,cluster可以只配置一个节点。而且,你可能也会有多个独立的clusters,每个cluster都有它自己的唯一的名称。

指定cluster名称命令

./elasticsearch -- cluster.name my_cluster_name

Node(节点)

一个node是一个server,是cluster的一部分,它存储数据且参与cluster的索引和查询功能。和cluster一样,每个节点都有自己的名称,默认在启动时赋予一个随机的人名。如果你不想要默认的名称,可以自定义名称。该名称对cluster管理很有用,特别是当你想确认哪个server对应哪个节点时。

一个node可以配置指定cluster名称加入该cluster。默认,每个节点加入名为”elasticsearch”的cluster。 
一个cluster可以包含任意数量的node。而且,如果没有其他node运行,启动一个node会默认形成一个单节点cluster,名为”elasticsearch”。

指定node名称命令

./elasticsearch--node.namemy_node_name

Index(索引)

index是具有相似特征的文档集合。例如,你可以有顾客数据的index、商品种类的index和订单数据的index。 
每个index都有唯一的名称(必须小写),当执行索引、搜索、更新和删除操作时都需要根据该名称找到对应的index。

一个cluster可以包含任意数量的index。

Type(类型)

在一个index中,可以定义一个或多个type。type是index的逻辑分类。

通常,type拥有一组通用field的文档集合。举例,你运行一个博客平台,把全部数据存储在一个index中。在这个index中,你可以为用户数据定义一个type,为博客数据定义一个type,为评论数据定义一个type。

Document(文档)

document是索引的基本单元信息。举例,你有一个客户的document、一个商品的document和一个订单的document。该document用JSON表示。

一个index/type中,可以包含任意多的document。注意,虽然document物理上存在index中,document实际上必须被分配到index中的type上。

Shards & Replicas(分片和副本)

一个index可以存储数量超出硬件限制的数据。举例,一个index包含10亿文档,占据1TB硬盘空间,就会导致无法放在单个节点硬盘上或者响应request太慢。

为了解决这个问题,Elasticsearch提供了将索引分片的技术,称为shard。当创建一个index,可以指定shard的数量。每个shard内部都是全功能而且相互独立的”index”,可以放在cluster上的任意node上。

Sharding重要的原因:

  • 允许横向扩展容量
  • 分布式并行操作shard(可能在多个node上),因而提高性能

分片是如何分布、文档是如何聚合回搜索结果的机制完全由Elasticsearch管理,对用户透明。

在网络/云环境中,故障是很常见的,比如一个shard/node宕了,因而容错机制非常有效,也是被推荐的。为此,Elasticsearch允许创建index的shard的一个或多个副本,称为replica。

Replication重要的原因:

  • 提供高可用性,以防shard/node失效。注意,一个replica shard绝对不能分配到它原先所在node(即创建副本的原本所在的node)。
  • 允许扩展搜索容量,因为搜索可以并行在所有replica上执行

总结一下,每个index可以被分为多个shard。一个index也可以被复制0份或者多份。一旦复制过,每个index将有主shard(创建副本的原本所在的shard)和replica shard(主shard的副本)。shard和replica的数量可以在index创建的时候自定义。index创建之后,你可以动态改变replica的数量,但是不能改变shard的数量。

默认的,每个index被分配5个主shard和1个replica,这意味着,如果你在cluster中有至少两个节点,每个index将有10个shard,分别是5个主shard和另外5个replica shard(1个完整的replica)。

elasticsearch基本概念的更多相关文章

  1. ElasticSearch 核心概念

    ElasticSearch核心概念-Cluster ElasticSearch核心概念-shards ElasticSearch核心概念-replicas ElasticSearch核心概念-reco ...

  2. ElasticSearch 全文检索— ElasticSearch 核心概念

    ElasticSearch核心概念-Cluster 1)代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的.es的一个概念就是去中心化,字 ...

  3. ELK 学习笔记之 elasticsearch基本概念和CRUD

    elasticsearch基本概念和CRUD: 基本概念: CRUD: 创建索引: curl -XPUT 'http://192.168.1.151:9200/library/' -d '{" ...

  4. Elasticsearch入门教程(二):Elasticsearch核心概念

    原文:Elasticsearch入门教程(二):Elasticsearch核心概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:ht ...

  5. 【ElasticSearch】概念

    小史是一个非科班的程序员,虽然学的是电子专业,但是通过自己的努力成功通过了面试,现在要开始迎接新生活了. 对小史面试情况感兴趣的同学可以观看面试现场系列. 随着央视诗词大会的热播,小史开始对诗词感兴趣 ...

  6. Elasticsearch基本概念和使用

    Elasticsearch基本概念和使用 1.操作索引 1.1.基本概念 Elasticsearch也是基于Lucene的全文检索库,本质也是存储数据,很多概念与MySQL类似的. 对比关系: 索引( ...

  7. Elasticsearch核心概念

    Elasticsearch 核心概念 Cluster 代表一个集群, 集群中有多个节点, 其中一个为主节点, 该节点可以通过选举产生.(主从节点只针对于集群内部) 去中心化: 对于集群外来说无中心节点 ...

  8. lucene和ElasticSearch基本概念

    lucene基本概念 索引(Index) 对应一个倒排表,一个检索的基本单位.在lucene中就对应一个目录. lucene基本概念 段(Segment) 一个索引可以包含多个段,段与段之间是独立的, ...

  9. Elasticsearch基础概念理解

    熟悉ES中的几个关键概念: 节点(Node):一个elasticsearch运行的实例,其实就是一个java进程.一般情况下,一台机器运行在一台机器上. 集群(Cluster): 好几个有相同集群名称 ...

  10. ElasticSearch 基本概念

    Elasticsearch是一个接近实时的搜索平台,就是说从索引一个文档直到这个文档能够被搜索到有一个轻微的延迟,通常是一秒钟 集群 一个集群通常有一个或多个elasticsearch节点组成,给这些 ...

随机推荐

  1. ComponentName意思

    ComponentNameActivity Intent i=new Intent(); i.setComponent(new ComponentName(String packageName,Str ...

  2. oracle中sql语句的优化

    oracle中sql语句的优化 一.执行顺序及优化细则 1.表名顺序优化 (1) 基础表放下面,当两表进行关联时数据量少的表的表名放右边表或视图: Student_info   (30000条数据)D ...

  3. JS中的prototype(转载)

    在研究别人写的js图像处理算法时,发现其中脚本中大量使用prototype,很难读明白,就网上查了下资料发现这篇文章很易懂,就转载如下: 1 原型法设计模式 在.Net中可以使用clone()来实现原 ...

  4. Ibatis根据id获取拼接好的sql语句案例

    //得到sql语句: public virtual string GetSqlStatement(string statementName, object paramObject) { ISqlMap ...

  5. [转]How To Use CSS3 Media Queries To Create a Mobile Version of Your Website

    CSS3 continues to both excite and frustrate web designers and developers. We are excited about the p ...

  6. vs2012快速将项目托管到github

    vs2012快速将项目托管到github   在VS2012中使用GitHub 注册GitHub账号(DeanZhouLin) https://github.com/ 向GitHub中添加一个仓库(T ...

  7. 今天用C#做的一个小的注册练习

    下边是实现的代码: using System;using System.Collections.Generic;using System.ComponentModel;using System.Dat ...

  8. iOS基础 - UIButton - UIImageView

    封装思想:将相同的重复东西保存到方法里,不同的东西用参数代替.不相同的东西交给方法调用者,相同东西自己搞定. 一.UIButton和UIImageView的区别 1.显示图片 1> UIImag ...

  9. c# in deep 之使用匿名方法的内联委托操作

    匿名方法允许我们指定一个内联委托的操作,为创建委托实例表达式的一部分.其可以对代码进行极度精简,当然可读性变得很差.下面看一个求平方根的例子. List<int> list = new L ...

  10. c# in deep 之LINQ简介(1)

    前两天公司进了一批书,在借阅jon skeet的c# in deep收获颇大,本书特点是介绍了不同版本的c#所增加的新特性.今天先写一下书中对linq的描述. 很多初学者在使用VS2010或2013写 ...