来源:
基本概念
Near Realtime(接近实时)
ES 是一个近乎实时的搜索引擎,这意味着从索引文档到可搜索文档之间只有一个轻微的延迟,默认通常是一秒。
ES 写入数据时,会先写到一个内存bufferr中去,但此时是搜不到该数据的,然后默认每隔一秒会刷到系统缓存中,等缓存中刷入数据后,才能从 ES 中搜索。
Cluster(集群)
群集是一个或多个节点的集合,它们一起保存整个数据,并提供跨所有节点的联合索引和搜索功能。每个群集都有自己的唯一群集名称,节点通过名称加入群集。
Node(节点)
节点是指属于集群的单个 ES 实例,存储数据并参与集群的索引和搜索功能。可以将节点配置为按集群名称加入特定集群,默认情况下,可以在 config/elasticsearch.yml 里定制我们的集群的名字。在实际的部署中,大多数情况还是需要一个 server 上运行一个 node。
在整个 Elastic 的架构中,Data Node 和 Cluster 的关系表述如下:
Document(文档)
ES 中索引和搜索的最小数据单元是文档,文档是可被索引的基本信息单位,通常以JSON形式表示。
Document 类似于 MySql 中行记录的概念。
Type(类型)
类型是文档的逻辑容器,类似于表是行的容器。
通常,为具有一组公共字段的文档类型,类似MySql中表的概念。
(在Elasticsearch 6.0.0及更高的版本中,一个索引只能包含一个类型。)
Index(索引)
索引是一些具有相似特征的文档集合,每个 Index 一个或许多的 documents 组成,并且这些 document 可以分布于不同的 shard 之中。
Shards(分片)
当索引存储大量数据时,可能会超出单个节点的硬件限制,为了解决这个问题,Elasticsearch提供了将索引细分为分片的概念。
分片机制赋予了索引水平扩容的能力、并允许跨分片分发和并行化操作,从而提高性能和吞吐量。
Replicas(副本)
ES 默认为每个索引创建一个主分片和一个副本。这意味着每个索引将包含一个主分片,每个分片将具有一个副本。
在可能出现故障的网络环境中,需要有一个故障切换机制,副本在某些节点失效的情况下提供高可用性。
Inverted index(倒排索引)
反向索引是 ES 和任何其他支持全文搜索的系统的核心数据结构,顾名思义就是通过Value去找key。
当一段文字从最原始的文字导入到 Elasticsearch 中,需要经过一个叫做 indexing 的过程。
ElasticSearch 的压缩算法
LZ4 是ElasticSearch数据存储的默认编码(压缩)方式,LZ4 具有更快的压缩与解压速度,通过 index.codec来设置。
什么是ELK?
ElasticSearch 通常不是单独使用,通常是 ElasticSearch+Logstash+Kibana (ELK) 配合使用。
L是 Logstash ,Logstash 是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地。
K就是 Kibana ,Kibana 是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。
ElasticSearch 和 Kibana 的安装
-
在安装前首先需要查看当前的 JDK 支持的 ES 版本,
-
然后前往Elastic
./bin/elasticsearch
./bin/kibana
-
启动成功后,访问
http://localhost:5601就能访问 Kibana 的可视化页面。
如果需要把 Kibana 的界面配置成中文,可在 config/kibana.yml 中配置命令:i18n.locale: "zh-CN"
操作 ElasticSearch
通常使用 REST 接口来对 Elasticsearch 进行操作,可以使用kibana开发工具进行操作:
可以通过HTTP:GET、POST、PUT、DELETE、PATCH 命令进行接口请求,对 ES 进行操作。