Elasticsearch 是一个高伸缩的开源全文搜索和分析引擎。它可以快速地、近实时的存储,搜索和分析大规模的数据。一般被用作底层引擎/技术,为具有复杂搜索功能和要求的应用提供强有力的支撑。
Elasticsearch 能够被用在这些地方:
对于本教程的其余部分,会通过 Elasticsearch 的启动和运行过程指导你初步认识它,并展示一些基本的操作,比如:索引,搜索和修改数据。本教程的结束后,你将会对 Elasticsearch 是什么以及它的工作原理有了较深的认识。希望你能受到启发,既能使用它建立复杂的搜索应用程序又能从你的数据中发掘有用的东西。
官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
中文社区:http://elasticsearch.cn/article/
参考文档:https://github.com/13428282016/elasticsearch-CN/wiki/es-gettting-started
Elasticsearch 版本:5.4
有一些概念是Elasticsearch 的核心。从一开始就理解这些概念将大大有助于以后的学习。
Elasticsearch 是一个接近实时的搜索平台。这意味着从将文档索引的时间到变得可搜索的时间只有轻微的延迟(通常为1秒)。
集群是一个或多个节点(服务器)的集合,它们联合起来保存所有的数据,并且可以在所有的节点上进行索引和搜索操作。集群由唯一的名称标识,默认是"elasticsearch"。由于一个节点仅仅可以属于一个集群,并根据集群名称加入集群。所以该名字很重要。
不要在不同的环境中使用一样的集群名字,否则可能会导致加入错误的集群。例如,你可以分别在开发,过渡,生产环境中使用集群名称, logging-dev , logging-stage 和 logging-prod 。
注意,只有一个节点的集群是有效和完美的。也可以拥有多个独立的集群,每个集群都有自己独特的集群名称。
节点是一个单一的服务器,是集群的一部分,存储数据,并参与集群的索引和搜索。和集群一样,节点也是通过唯一的名字去区分,默认名字是一个随机的UUID(Universally Unique IDentifier),当服务器启动的时候就会设置到该节点。如果不想使用默认值,你也可以自定义节点的名称。名称对管理员来说十分重要,它可以帮助你区分出集群中的各个服务器和哪些节点相对应。
节点通过配置集群的名称,就可以加入到指定的集群。默认情况下,节点都加入一个叫 elasticsearch 的集群,这意味着如果你在网络中启动了大量的节点并且假如他们都能互相通讯的话,那么他们将会被自动的加入一个名字叫 elasticsearch 的集群。
索引是具有某种相似特征的文档的集合。例如,客户数据索引,产品目录索引,以及订单数据索引。索引由名称(必须全部为小写)标识,此名称用于在对文档进行索引、搜索、更新和删除操作时使用。在单个集群中,您可以根据需要定义任意数量的索引。
一个索引可以定义一个或多个类型。类型是索引的逻辑类别/分区,你怎么理解都行。通常,为具有一组公共字段的文档定义一种类型。例如,一个博客平台,假如将所有数据存储在单个索引中。在此索引中,可以定义用户数据类型,博客数据类型以及评论数据类型。
文档是可以被索引的基本单位。例如,用一个文档保存某个客户的数据,或者保存单个产品的数据,或者保存单个订单的数据。文档使用JSON表示。在索引/类型中可以存储大量文档。值得注意的是,尽管文档本质上是存放在索引中,但实际上是被索引/分配到索引中的一个类型中。
一个索引可能存储海量数据,有可能超过单个节点的硬盘容量。例如,某个索引存储了10亿个文档,占用1TB的硬盘空间,单个节点的硬盘有可能不足以存储那么大的数据量,就算可以存储下,但是可能会降低服务器处理搜索请求的速度。
为了解决这个问题, elasticsearch 提供了分片功能,即将索引细分。创建索引时,可以简单地定义所需的分片数。每个分片本身就具备索引的全部功能,可以存放在集群中的任何一个节点。
分片很重要,主要原因有两个:
碎片分发的机制,以及它的文档如何汇总回到搜索请求中完全由Elasticsearch管理,并且对用户来说是透明的。
在网络/云环境中,任何时候都可能发生故障,分片会非常有用,并强烈建议使用故障转移机制,以防止分片/节点脱机或消失。为此, elasticsearch 允许您将索引的分片复制一份或多份,也就是所谓的复制分片,或简写为副本。
副本很重要,主要原因有两个:
总而言之,每个索引可以分为多个分片。每个索引也可以被复制零次(意味着没有副本)或多次。一旦复制,每个索引将具有主分片(复制的原始分片)和副分片(主分片的副本)。可以在创建索引时根据索引定义碎片和副本的数量。创建索引后,您可以随时动态更改副本数,但不能更改事后的分片数。
默认情况下,每个索引都会被分配5个主分片和1一个复制分片,这意味着如果你的集群中有两个节点,你的索引将会有5个主分片和5个复制分片,总共有10个分片。
每个 elasticsearch 分片是一个 Lucene index ,一个 Lucene 索引中可以有很多的文档,截至 LUCENE-5843 ,最多2,147,483,519(= Integer.MAX_VALUE - 128) 个文档. 可以使用 _cat/shards api监视分片大小。
原文:http://www.cnblogs.com/ginb/p/6637236.html