1.什么是elasticsearch?
elastic是一款开源,可扩展全文搜索和分析的一款构建在lucene之上的框架。它允许我们实时快速的存储,搜索,分析大容量数据。github的搜索好像就是用elasticsearch做的。
2.elasticsearch的一些基本概念
cluster:
1.代表一个集群,集群中有多个节点(每个节点上都是相同的数据)
2.默认cluster名字是elasticsearch,要注意的是一个节点只能属于一个cluster, 而区分cluster就是用名字来区分,因此不通的cluster名字不能相同。 官网下载的elasticsearch-xx文件夹下的data目录下文件夹名字就是cluster的名字。
node:
1.它是cluster的一部分,用来存储数据,并提供集群的索引和搜索功能。
2.node都会有一个名字,启动时默认是随机生成的名字,但是我们可以自己指定名称。 一个node节点可以配置加到cluster上,默认是加入到elasticsearch这个cluster上面。
3.一般在一个cluster上,我们自己可以配置多个node,如果要配置多个node, 那么可以再启用elasticsearch服务来启动一个进程, 要注意的是新启动的elasticsearch里面配置文件elasticsearch.ymal配置的cluster.name必须一样 在data/elasticsearch下可以发现有nodes文件夹,存在文件夹0,这个文件夹所说的节点.
index:
索引是document的一个集合. 比如我们有一些客户的数据索引,另外还有一个产品的数据索引和订单的数据索引。 一个索引必须用小写来指定名字,名字对于索引,搜索,更新,删除操作是很重要的。 如果很难理解那么我们可以认为这个就是数据库。(如果创建过自己index,比如叫firsttime, 那么在elasticsearch-xx/data/elasticsearch/0/indices下可以发现有firsttime文件夹, 这个文件夹名字就是对应index名字,里面存放了索引数据)
type:
对于type就是对index的更细的一个划分。我们可以基于index上定义更多的type。 既然我们能把index理解成数据库,那么type就是数据库中的表了。
document:
我们可以把它理解成数据库表的一条条数据(row)。这个是被索引的最基本单元。
shards:
1.分片,如果我们的索引数据很大,超出了硬件存放的单个文件限制(linux下就有限制), 那么会发生问题的,而且也会影响搜索请求的速度。因此elasticsearch就引入了这个shards技术了。
2.当我们创建一个索引,我们能简单的定义很多个分片, 每个分片都有自己搜索,更新,删除等和index一样全部功能的一小块。 分片shards的好处是可以让我们水平分割和扩展我们存放的内容索引, 同时还可以让我们分发和(在多个节点可能)并行跨碎片操作从而提高性能/吞吐量。
3.可以发现在elasticsearch-xx/data/elasticsearch/0/indices/firsttime下 有默认5个shared从0-4
replicas:
1.当某个节点某个分片损坏或丢失时可以从副本中恢复。
2.提高es的查询效率,es会自动对搜索请求进行负载均衡。replicas可以设置为0个或者多个。 一旦设置replicas,那么每个shards就会有一个主shards,而replica shards就是对主shards的拷贝 shards和replicas数量在索引创建时生成。当索引index生成后,我们能够动态改变replicas的数量, 但是不能改变shards的数量。
如果我们在cluster上面有两个节点nodes,比如分片0(有两个,每个节点各有一个分片0), 那么会随机在其中一个节点上设置一个为主分片,另外一个就是replica 分片了, 这样我们将会有5个主要的shards(在主node上面)和另外5个replica shards(在另外一个node上) 总共有10个shards. 假如有3个nodes,那么会从所有nodes上选出0的一个主分片,还有1-4的每个主分片 总共还是5个主分片,其他的10个就是replica 分片了.这样应该理解了吧.
时间: 2024-10-28 16:26:33