暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Elasticsearch全面的介绍(另附安装包和安装教程)

DBA巫师 2024-04-12
212

扫描下方二维码或添加作者微信,回复“加群”即可开启你的数据库和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能够有效地处理大量数据,并支持复杂的搜索和分析操作。



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 name
    cluster.name: my_cluster_name


    # node name and roles
    node.name: my_node_1
    node.roles[master, data]


    # IP or host name of the node
    network.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.4


      cluster.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: 2
        index.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应急使用指南


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


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


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




          文章转载自DBA巫师,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

          评论