Elasticsearch是什么?Elasticsearch 能够被用在什么地方?


当前第2页 返回上一页

为了解决这个问题, 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监视分片大小。

总结

1、为什么不用关系型数据库做搜索?因为用数据库来实现搜索,性能会很差,不能进行分词搜索。

2、什么是全文检索、倒排索引和Lucene?前人已经总结过了,请参考【手把手教你全文检索】Apache Lucene初探

3、Elasticsearch的特点

  • 可以分布式集群,对海量数据进行近实时的处理;

  • 对用户而言,开箱即用,非常简单。如果数据量不大,操作不会太复杂;

  • 具有关系型数据库没有的功能,比如全文检索,同义词处理,相关度排名,复杂数据分析,海量数据的近实时处理;

  • 基于lucene,隐藏了复杂性,提供简单易用的restful api接口、java api接口

4、elasticsearch的核心概念

  • Cluster:集群包含多个节点,每个节点属于哪个集群是通过配置来决定的(默认是elasticsearch)

  • Node:集群中的一个节点,节点默认会自动加入名叫"elasticsearch"的集群。一个elasticsearch服务就是一个节点,比如一台机器启动两个es服务,就有两个节点。

  • Index:索引,相当于mysql的数据库,包含一堆有相似结构的文档数据。

  • Type:类型,相当于mysql的表,index中的一个逻辑数据分类。

  • document:文档,相当于mysql表中的一行记录,是es中的最小数据单元。

  • shard:分片,单台机器无法存储大量数据,es可以将一个索引中的数据切分为多个shard,分布在多台服务器上存储。

  • replica:副本,为了防止宕机,shard丢失,所以最小的高可用配置,是2台服务器。

以上就是Elasticsearch是什么?Elasticsearch 能够被用在什么地方?的详细内容!

返回前面的内容

相关阅读 >>

Elasticsearch是什么?Elasticsearch 能够被用在什么地方?

更多相关阅读请进入《Elasticsearch》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...