hundsun

作者:幻好

来源:恒生LIGHT云社区

上期介绍了 ElasticSearch 的基本概念,本期对 ElasticSearch 的核心原理进行深入理解,并进行实践。(上期入口)

1623292981328-a0461c1a-3ae8-452e-8ba0-5c1b742a28b3.png

基本概念

Near Realtime(接近实时)

ES 是一个近乎实时的搜索引擎,这意味着从索引文档到可搜索文档之间只有一个轻微的延迟,默认通常是一秒。

ES 写入数据时,会先写到一个内存bufferr中去,但此时是搜不到该数据的,然后默认每隔一秒会刷到系统缓存中,等缓存中刷入数据后,才能从 ES 中搜索。

1623301243801-ad8191ac-7ca0-4289-a147-7c995e642108.png

Cluster(集群)

群集是一个或多个节点的集合,它们一起保存整个数据,并提供跨所有节点的联合索引和搜索功能。每个群集都有自己的唯一群集名称,节点通过名称加入群集。

1623293275392-a887d6ea-5061-4c5f-8735-eac7e9223559.png

Node(节点)

节点是指属于集群的单个 ES 实例,存储数据并参与集群的索引和搜索功能。可以将节点配置为按集群名称加入特定集群,默认情况下,可以在 config/elasticsearch.yml 里定制我们的集群的名字。在实际的部署中,大多数情况还是需要一个 server 上运行一个 node。

1623293597539-c78fac7d-1ea3-4a68-b0c3-a8f665b2636e.png

在整个 Elastic 的架构中,Data Node 和 Cluster 的关系表述如下:

1623293915769-da8c518d-0838-40ef-9a8b-8b822dff4648.png

Document(文档)

ES 中索引和搜索的最小数据单元是文档,文档是可被索引的基本信息单位,通常以JSON形式表示。

Document 类似于 MySql 中行记录的概念。

1623294439238-4a00cbff-d2b7-4b6b-b4f1-b17de799bb47.png

Type(类型)

类型是文档的逻辑容器,类似于表是行的容器。

通常,为具有一组公共字段的文档类型,类似MySql中表的概念。

(在Elasticsearch 6.0.0及更高的版本中,一个索引只能包含一个类型。)

Index(索引)

索引是一些具有相似特征的文档集合,每个 Index 一个或许多的 documents 组成,并且这些 document 可以分布于不同的 shard 之中。

1623294000536-4342470f-b4f8-40fd-8771-e07602daab0e.png

Shards(分片)

当索引存储大量数据时,可能会超出单个节点的硬件限制,为了解决这个问题,Elasticsearch提供了将索引细分为分片的概念。

分片机制赋予了索引水平扩容的能力、并允许跨分片分发和并行化操作,从而提高性能和吞吐量。

Replicas(副本)

ES 默认为每个索引创建一个主分片和一个副本。这意味着每个索引将包含一个主分片,每个分片将具有一个副本。

在可能出现故障的网络环境中,需要有一个故障切换机制,副本在某些节点失效的情况下提供高可用性。

Inverted index(倒排索引)

反向索引是 ES 和任何其他支持全文搜索的系统的核心数据结构,顾名思义就是通过Value去找key。

当一段文字从最原始的文字导入到 Elasticsearch 中,需要经过一个叫做 indexing 的过程。

1623303750907-34b4bf25-4760-42f5-a861-19816f14aa61.png

ElasticSearch 的压缩算法

LZ4 是ElasticSearch数据存储的默认编码(压缩)方式,LZ4 具有更快的压缩与解压速度,通过 index.codec来设置。

1623329379690-bb1a5af9-9e99-4c87-913f-60d1e57f09e2.png

什么是ELK?

ElasticSearch 通常不是单独使用,通常是 ElasticSearch+Logstash+Kibana (ELK) 配合使用。

L是 Logstash ,Logstash 是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地。

1623301152404-0823069f-35d2-4612-976a-ef27a541e6ff.png

K就是 Kibana ,Kibana 是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。

1623300110024-b183b188-3c8e-416a-80d0-28b17818b047.png

ElasticSearch 和 Kibana 的安装

  1. 在安装前首先需要查看当前的 JDK 支持的 ES 版本,参考地址

1623299978750-4b385cf5-1e49-48b7-aa76-cbbf408c92c9.png

  1. 然后前往Elastic官网下载需要的版本的软件包,下载后解压,运行bin中脚本启动 ES 和 Kibana。

./bin/elasticsearch
./bin/kibana
  1. 启动成功后,访问http://localhost:5601 就能访问 Kibana 的可视化页面。

1623300431696-dc0ef190-f1df-4ed9-ba50-02e297703e6b.png1623300474936-b7614cb8-8c3b-4f92-abcb-5092728d4f75.png1623300553947-0e2318b4-fdf8-4bf0-8052-99278ce45023.png

如果需要把 Kibana 的界面配置成中文,可在 config/kibana.yml 中配置命令:i18n.locale: "zh-CN"

1623300778436-19a0016a-8db4-49a6-ab3f-e8e1b2eeee93.png

1623300802161-cf5eee0d-f6e8-424e-b2cd-c2ea761a6f3e.png

操作 ElasticSearch

通常使用 REST 接口来对 Elasticsearch 进行操作,可以使用kibana开发工具进行操作:

1623338515362-766c87e1-f218-40c9-8f5e-570bdb8fc1f0.png

可以通过HTTP:GET、POST、PUT、DELETE、PATCH 命令进行接口请求,对 ES 进行操作。



分类:

技术点:

相关文章: