扫描下方二维码或添加作者微信,回复“加群”即可开启你的数据库和IT学习之旅。加入我们,你将获得不仅仅是知识,多位业内数据库ACE大佬镇场+免费GPT4资源+Oracle MOS免费查询,很多志同道合的小伙伴,欢迎加群一起探讨、一起学习、一起进步!


Elasticsearch 是一个高度可扩展的开源全文搜索和分析引擎。它允许你快速、近实时地存储、搜索和分析大量数据。它通常被用作底层引擎/技术,驱动应用程序的复杂搜索功能。


Elasticsearch关键特性:
1、分布式本质:Elasticsearch 自动分散数据,可以在多个服务器上处理大量数据。
2、全文搜索:支持高级全文搜索功能,通过使用Lucene库进行数据索引和搜索。
3、实时分析:Elasticsearch 的搜索速度非常快,支持近乎实时的搜索和分析。
4、高可扩展性:可以从一个到数百个节点轻松扩展,处理PB级别的数据。
多种客户端和工具:支持多种语言的客户端(如Java、Python、.NET等),并有大量工具和插件支持数据的索引和查询。


Elasticsearch使用场景:
日志和事件数据分析:Elasticsearch 能够有效处理和分析日志文件、交易数据或任何时间序列数据。例如,它被广泛用于集中日志管理系统,如ELK(Elasticsearch, Logstash, Kibana)堆栈。
全文搜索引擎:可以用作网站或应用程序的内部搜索引擎,允许用户对复杂数据进行全文搜索。
安全信息和事件管理(SIEM):在安全分析和网络监控领域,Elasticsearch 用于存储和分析安全事件数据。
实时数据应用:用于实时分析的应用程序,如监控应用程序或实时大数据分析。
电商和零售:在电子商务平台中,Elasticsearch 可以用来提供商品搜索、价格比较、个性化推荐等功能。
企业级搜索:公司可以利用Elasticsearch提高内部数据的可访问性和检索能力,包括文档、邮件和其他内容的搜索。


Elasticsearch主要组件介绍:
Elasticsearch 集群由多个组件构成,每个组件都承担特定的职责,共同保证集群的高效运行。下面是一些主要的组件及其用途:
1. 节点(Node)
节点是集群的基本工作单元,每个节点包含部分集群数据,可以处理数据存储、索引和搜索操作。节点有以下几种类型:
主节点(Master Node):负责管理集群的全局操作,如创建或删除索引,跟踪哪些节点是集群的一部分,并决定哪些分片分配给哪些节点。
数据节点(Data Node):负责存储数据、执行数据相关的查询和聚合操作。
协调节点(Coordinating Node):负责将客户端请求分发到正确的节点,并将结果汇总返回给客户端。
引入节点(Ingest Node):预处理文档,在文档被索引之前,对其进行处理。
机器学习节点(Machine Learning Node:专门用于运行Elasticsearch的机器学习功能,处理如异常检测等任务。
2. 索引(Index)
索引是具有相似特征的文档集合。每个索引都可以被分割成多个分片,可以分布在多个节点上。
3. 分片(Shard)
分片是索引的一个部分,是集群分布式处理和存储功能的基础。分片有两种类型:
主分片(Primary Shard):每个文档都存储在一个主分片上。
副本分片(Replica Shard):是主分片的复制,用于提供数据冗余,提高系统的容错能力和查询负载的分散。
4. 集群状态(Cluster State)
包含了集群所有操作元数据的信息,例如创建的索引、分配的分片位置以及哪些节点是活跃的等。
5. 任务管理(Task Management)
Elasticsearch 会对正在运行的复杂操作进行跟踪,如批量处理请求、大规模索引重建等。
6. 网关(Gateway)
负责读取全集群状态,以及在全集群重启后恢复数据。
7. 发现模块(Discovery Module)
负责集群中所有节点的发现和选举过程。它确保只有合法的节点加入集群,并且在需要时选择新的主节点。
8. 通信层(Transport)
负责节点之间的所有数据交换,使用高效的通信协议来同步数据和状态信息。
这些组件共同工作,保证了Elasticsearch集群的高性能、可扩展性和高可用性。通过不同类型的节点和分片策略,Elasticsearch能够有效地处理大量数据,并支持复杂的搜索和分析操作。


下载地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.10.3-linux-x86_64.tar.gz
步骤1:规划集群
在设置集群之前,根据数据量、查询负载和冗余要求来规划集群的大小和结构是非常重要的。集群应至少包括一个有资格成为主节点的节点(对于生产集群,建议有三个),并且有多个数据nodes用于存储数据。根据数据量和查询负载,可以增加数据节点的数量。
步骤2:配置节点
您需要通过在 elasticsearch.yml 配置文件中设置 各种参数 来配置集群中的每个节点。'node.name' 参数应设为每个节点的唯一名称。'cluster.name' 参数应设置为集群中所有节点的相同值。'network.host' 参数应设置为节点的 IP 地址或主机名。
'node.roles' 参数应根据节点的角色进行设置。对于有资格成为主节点的节点,应将 'master' 添加到角色数组中。对于数据节点,根据节点所在的数据层,有多种不同的角色:data_hot,data_warm,data_cold 和 data_frozen。如果您不使用数据层,或者您的数据不是基于时间序列的,您可以使用 data 或 data_content 角色。
示例配置文件:
# cluster namecluster.name: my_cluster_name# node name and rolesnode.name: my_node_1node.roles: [master, data]# IP or host name of the nodenetwork.host: 192.168.1.10
步骤3:设置Discovery
如果您的节点安装在具有不同主机名和IP的多个主机上,您还需要配置网络发现设置,以便您的节点可以彼此连接,否则它们只会尝试连接到安装在同一主机上的其他节点。这可以通过 discovery.seed_hosts 参数来完成,该参数必须包含集群中所有主节点可选的节点列表,以便指导您的节点可以连接到哪些其他节点。
首次引导您的集群时,另一个至关重要的步骤非常重要,即定义集群的所有主节点可选节点列表。这需要在您首次启动生产集群时使用 cluster.initial_master_nodes 参数仅指定一次,该参数必须包含所有主节点可选节点的节点名称(即,配置在 node.name 配置参数中的确切相同名称)。集群成功引导后,必须从配置文件中删除此设置。
需要在elasticsearch中添加以下配置参数。Yml配置文件,以便配置网络发现设置:
discovery.seed_hosts:- 192.168.1.2- 192.168.1.3- 192.168.1.4cluster.initial_master_nodes:- master_node_1- master_node_2- master_node_3
步骤 4:配置分片分配
分片 分配是 Elasticsearch 集群设置的关键方面。‘index.number_of_shards’ 参数应根据数据量和查询负载进行设置。‘index.number_of_副本’ 参数应根据冗余要求进行设置。
这些配置参数可以在 elasticsearch.yml 配置文件中静态配置,为所有要创建的 索引 提供默认值,并且它们也可以在创建索引时通过在索引设置中指定它们来覆盖。
您可以在 elasticsearch.yml 配置中添加以下参数,以确保所有索引都将创建 2 个主分片和每个主分片的 1 个副本:
index.number_of_shards: 2index.number_of_replicas: 1
如果,出于某种原因,你事先知道你的其中一个索引会变得更大,并且需要有超过 2 个主分片,你可以在创建索引时进行配置,像这样:
PUT my-big-index{"settings": {"index.number_of_shards": 5,"index.number_of_replicas": 2},"mappings": {…}}
步骤 5:启动节点
一旦节点配置好,就可以通过在 Elasticsearch 安装的 bin 目录中运行‘elasticsearch’命令来启动它们。节点将互相发现并形成集群。
你首先应该启动所有有资格成为主节点的节点,以便集群可以形成,然后你可以启动所有剩余的数据节点。
步骤 6:验证集群设置
可以通过向‘_cluster/health’端点发送 GET 请求来验证集群设置。响应应显示集群的状态为‘green’,集群中节点的数量,以及数据节点和有资格成为主节点的节点的数量。
步骤 7:调优集群
在集群设置后,应进行优化以获得最佳性能。JVM 堆大小应设置为可用 RAM 的不超过 50%,但最多 30.5GB。‘indices.fielddata.cache.size’ 参数应设置以限制用于字段数据缓存的内存量。默认情况下,此设置是无界的,但可以使用绝对大小(10GB)或可用堆的百分比值(10%)进行限制。
‘indices.breaker.total.limit’ 参数应设置为限制所有circuit breakers使用的内存量。‘thread_pool.search.size’ 和 ‘thread_pool.search.queue_size’ 参数应根据查询负载进行设置。


我的职业转型之路:从DBA到PM

Oracle应急使用指南

职场生存指南:技术人如何保持竞争力

大国竞争:一场无声数据库的战争

中外数据库的差异究竟在什么地方




