ElasticSearch入门

本文详细介绍了ElasticSearch的分片与副本机制,探讨了集群的高可用性和数据分布。同时,通过Docker搭建了ElasticSearch+Kibana环境,并展示了如何使用Kibana进行索引管理和查询操作。
摘要由CSDN通过智能技术生成
1. 简介

ElasticSearch是一个高可扩展的开源全文搜索分析引擎,可以用它近实时的来存储、搜索和分析大量的数据。
ElasticSearch的底层是开源库Lucene,但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。

2. ElasticSearch中的基本概念

1. Cluster
集群,一个ES集群是由多个节点(Node)组成的,每个集群都有一个cluster name作为标识,在同一网段下的ElasticSearch实例会通过cluster name决定加入到那个集群下。集群是一个或者多个节点的集合,他们一起保存整个数据,并提供跨所有节点的联合索引和搜索功能。
问题:一个es服务可以有多个集群?

2. node
节点,一个ES实例就是一个node,一个机器可以有多个实例,所以并不是说一台机器就是一个node,大多数情况下,每个node运行在一个独立的环境或者虚拟机上。

3. index
索引,即一系列documents的集合

4. shard
(1). 分片,ES是分布式搜索引擎,每个索引有一个或多个分片,索引的数据被分配到各个分片上,相当于一桶水,用N个杯子装。
(2). 分片有助于横向扩展,N个分片会被尽可能平均地(rebalance)分配在不同的节点上(例如你有2个节点,4个主分片(不考虑备份),那么每个节点会分到2个分片,后来你增加了2个节点,那么你这4个节点上都会有1个分片,这个过程叫relocation,ES感知后自动完成) 问题:数据会尽可能平均分配到各个分片上吗?
(3). 分片是独立的,对于一个Search Request的行为,每个分片都会执行这个Request
(4). 每个分片都是一个Lucene Index,所以一个分片只能存放 Integer.MAX_VALUE - 128 = 2,147,483,519个docs。
5. replica
(1). 复制,可以理解为备份分片,相应地每个备份有对应的主分片(primary shard)
(2). 主分片和备分片不会出现在同一个节点上(防止单点故障),默认情况下一个索引创建5个分片一个备份(即5primary+5replica=10个分片)
(3). 如果你只有一个节点,那么5个replica都无法分配(unassigned),此时cluster status会变成Yellow
(4). 作用:对于分布式搜索引擎来说,分片及副本的分配将是高可用及快速响应的设计核心,主分片与副本分片都能处理查询请求,他们的唯一区别是只有主分片才能处理索引请求。此外副本策略提供了高可用和数据安全的保障,当所在的机器宕机,Elasticsearch使用其副本进行恢复,从而避免数据丢失。

6. 集群发现机制
比如当前我们启动了一个es进程,当启动了第二个进程时,这个进程作为一个node自动发现了集群,并加入了进去。
Shard负载均衡:比如现在有10个shard,集群中有三个节点,es会均衡的进行分配,以保证每个节点均衡的负载请求。
请求路由:当索引一个文档的时候,文档会被存储到一个主分片中。ElasticSearch通过下面这个公式决定索引到那个分片:
shard = hash(routing) % number_of_primary_shards
routing 是一个可变值,默认是文档的 _id ,也可以设置成一个自定义的值。 routing 通过 hash 函数生成一个数字,然后这个数字再除以 number_of_primary_shards (主分片的数量)后得到 余数 。这个分布在 0 到 number_of_primary_shards-1 之间的余数,就是我们所寻求的文档所在分片的位置。

7. Rebalance自动均衡
创建的索引默认有5个分片,只有一个节点时5个分片都在同一个node上,如果新加入一个node,那么ElasticSearch会重新把分片均衡到node上。

shard&replica机制梳理总结
1. index包含多个shard
2. 每个shard都是一个最小工作单元,承载部分数据,lucene实例,完整的建立索引和处理请求的能力
3. 增减节点时,shard会自动在nodes中负载均衡
4. primary shard和replica shard,每个document肯定只存在于某一个primary shard以及其对应的replica   shard中,不可能存在于多个primary shard
5. replica shard是primary shard的副本,负责容错,以及承担读请求负载
6. primary shard的数量在创建索引的时候就固定了,replica shard的数量可以随时修改
7. primar
ElasticSearch是一个开源的分布式搜索引擎,基于Lucene库。它可以快速地存储、搜索和分析大量的数据。ElasticSearch被广泛用于日志分析、全文搜索、安全分析和商业智能等领域。 以下是ElasticSearch入门指南: 1. 安装ElasticSearch:你可以从ElasticSearch官网下载并安装ElasticSearch。根据你的操作系统选择相应的版本。 2. 启动ElasticSearch:启动ElasticSearch非常简单。只需在终端中运行elasticsearch命令即可。 3. 探索ElasticSearch:通过在浏览器中输入http://localhost:9200/,可以访问ElasticSearch的REST API,并能看到ElasticSearch的基本信息。 4. 创建索引:在ElasticSearch中,数据被存储在索引中。你可以通过发送PUT请求来创建一个新的索引。例如,你可以使用以下命令来创建一个名为“my_index”的新索引: ``` PUT /my_index { "settings": { "number_of_shards": 1, "number_of_replicas": 0 } } ``` 5. 添加文档:在ElasticSearch中,文档是指一个JSON对象。你可以使用以下命令将文档添加到“my_index”索引中: ``` PUT /my_index/_doc/1 { "title": "Elasticsearch入门", "author": "John", "content": "Elasticsearch是一个开源的分布式搜索引擎" } ``` 6. 搜索文档:你可以使用以下命令来搜索“my_index”索引中的所有文档: ``` GET /my_index/_search ``` 7. 进行查询:你可以使用查询语句来搜索“my_index”索引。例如,你可以使用以下命令来搜索标题包含“Elasticsearch”的所有文档: ``` GET /my_index/_search { "query": { "match": { "title": "Elasticsearch" } } } ``` 这就是ElasticSearch入门指南。对于更深入的学习,你可以查看ElasticSearch官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值