Elasticsearch

如题所述

第1个回答  2022-07-07

Elasticsearch是一个基于Lucene的实时分布式的搜索与分析引擎。Elasticsearch为所有类型的数据提供近乎实时的搜索和分析。无论结构化或非结构化文本、数字数据还是地理空间数据,Elasticsearch都可以有效地存储和索引,以支持快速搜索。随着你的数据和查询量的增长,Elasticsearch的分布式特性使部署能够随着它而无缝增长。

Elasticsearch是一个 分布式文档存储 。Elasticsearch不是将信息存储为列式数据行,而是存储已序列化为JSON文档的复杂数据结构。当集群中有多个Elasticsearch节点时,存储的文档会分布在整个集群中,并且可以从任何节点立即访问。

存储文档后,它会在近乎实时的情况下被索引并完全可搜索——1秒内。Elasticsearch使用一种称为倒排索引的数据结构,它支持非常快速的全文搜索。倒排索引列出了出现在任何文档中的每个唯一单词,并标识了每个单词出现的所有文档。

索引是文档的优化集合,每个文档都是字段的集合,字段是包含数据的键值对。 默认情况下,Elasticsearch对每个字段中的所有数据进行索引,并且每个索引字段都有一个专用的优化数据结构。

Elasticsearch还具有无预定数据模式(schema-less)的能力,这意味着无需明确指定如何处理文档中可能出现的每个不同字段即可对文档进行索引。启用动态映射后,Elasticsearch会自动检测新字段并将其添加到索引中。只要开始索引文档,Elasticsearch就会检测并将布尔值、浮点和整数值、日期和字符串映射到适当的Elasticsearch数据类型。也可以定义规则来控制动态映射,明确定义映射以完全控制字段的存储和索引方式。

Elasticsearch提供了一个简单REST API,用于管理集群以及索引和搜索数据。可以直接从命令行、应用程序客户端或通过Kibana中的开发者控制台轻松提交请求。

Elasticsearch REST API支持结构化查询、全文查询和将两者结合的复杂查询。结构化查询类似于在SQL中构造的查询类型。全文查询查找与查询字符串匹配的所有文档,并按与搜索词的匹配程度对它们进行排序。

除了搜索单个术语之外,还可以执行短语搜索、相似性搜索和前缀搜索。可以使用 Elasticsearch全面的JSON样式查询语言 (Query DSL) 访问所有这些搜索功能。 您还可以构建SQL样式的查询以在Elasticsearch内本地搜索和聚合数据。

建议使用三个主节点三个数据节点集群,这里是演示

环境规划

Index modules

Index management

可以通过Kibana Management或ILM API创建和管理索引生命周期策略。当您为Beats或Logstash Elasticsearch输出插件启用索引生命周期管理时,默认策略是自动配置的。

索引生命周期阶段共分为五个阶段:

在为日志或指标等时间序列数据编制索引时,不能无限期地写入单个索引。 为了满足索引和搜索性能要求并管理资源使用情况,写入索引直到满足某个阈值,然后创建一个新索引并开始写入它。 使用滚动索引能够达到以下效果:

ILM能够根据索引大小、文档计数或年龄自动滚动到新索引。 当触发 Rollover 时,会创建一个新索引,写入别名会更新为指向新索引,所有后续更新都会写入新索引。

索引生命周期操作

配置生命周期策略

启动和停止索引生命周期管理

命令使用均已运行用户执行

elasticsearch-keystore 命令管理 Elasticsearch 密钥库中的安全设置。

elasticsearch-node命令能够在节点上执行某些不安全的操作,这些操作只能在关闭时执行。 此命令允许您调整节点的角色,不安全地编辑集群设置,并且即使在与磁盘上的数据不兼容的情况下,也可以在灾难后恢复某些数据或启动节点。

创建、列出和删除基于文件的服务账户令牌。当创建第一个服务帐户令牌时,此命令会在 $ES_HOME/config 目录中创建一个 service_tokens 文件。 该文件默认不存在。Elasticsearch监视此文件的更改并动态重新加载它.

设置内置用户的密码。此命令仅供在Elasticsearch安全功能的初始配置期间使用。 它使用弹性引导密码来运行用户管理API请求。 如果Elasticsearch密钥库受密码保护,则必须先输入密钥库密码,然后才能为内置用户设置密码。 为弹性用户设置密码后,引导密码不再有效,无法使用该命令。

在某些情况下,分片副本的Lucene索引或事务日志可能会损坏。 elasticsearch-shard命令能够在无法自动恢复或从备份恢复的分片的良好副本时删除分片的损坏部分。运行elasticsearch-shard时,将丢失损坏的数据。在运行elasticsearch-shard之前停止Elasticsearch。

使用基于文件的用户身份验证,则可以使用elasticsearch-users命令添加和删除用户、分配用户角色和管理密码。

参考官方文档 REST APIs

快照是从正在运行的Elasticsearch集群中获取的备份。 可以拍摄整个集群的快照,包括其所有数据流和索引。 还可以仅对集群中的特定数据流或索引进行快照。必须先注册快照存储库,然后才能创建快照。

Elasticsearch以增量方式进行快照:快照过程只将数据复制到存储库中,而之前的快照还没有复制到那里,避免了不必要的重复工作或存储空间。这意味着可以安全地以最小的开销频繁地进行快照。这种增量只适用于单个存储库,因为存储库之间没有数据共享。快照在逻辑上也是相互独立的,即使是在一个存储库内:删除一个快照不会影响任何其他快照的完整性。

可以将快照恢复到正在运行的集群中,默认情况下包括快照中的所有数据流和索引。 也可以选择仅从快照恢复集群状态或特定数据流或索引。

可以使用快照生命周期管理来自动拍摄和管理快照。

快照包含构成索引或数据流支持索引的磁盘上数据结构的副本。这意味着快照只能被恢复到可以读取索引的Elasticsearch版本中。版本兼容图如下:

相似回答