【基础篇】第2章 Elasticsearch安装与配置

2.1 环境准备

2.1.1 操作系统选择

Elasticsearch作为一个跨平台的搜索引擎,理论上支持所有能运行Java虚拟机的操作系统,包括但不限于Linux、macOS和Windows。Linux是生产环境中最为推荐的选择,因为它提供了更好的性能和稳定性。macOS适合开发和测试环境,而Windows虽然支持,但在企业级部署中较为少见。

2.1.2 JDK安装

Elasticsearch需要Java Development Kit (JDK) 11或更高版本来运行。首先,访问Oracle JDK或Adoptium下载合适的版本并安装。安装后,确保将JAVA_HOME环境变量设置正确。例如,在Linux系统中,编辑.bashrc.profile文件,加入以下行:

export JAVA_HOME=/path/to/jdk
export PATH=$JAVA_HOME/bin:$PATH

重启终端后,通过java -version命令验证安装是否成功。

2.1.3 系统需求说明

Elasticsearch对内存有较高要求,最低建议分配2GBJVM堆空间,但针对生产环境,至少8GB或更多内存更为合适。此外,磁盘空间应考虑数据的增长需求,至少预留足够的空间存放索引和日志文件。系统还应具备足够的CPU核心数,以支持并发操作。

2.2 安装指南

2.2.1 单节点安装

对于初次尝试或测试环境,单节点安装是最简单的方式。首先,从Elastic官方网站下载最新版本的Elasticsearch。解压下载的文件,进入bin目录,直接运行./elasticsearch(Linux/macOS)或elasticsearch.bat(Windows)即可启动Elasticsearch。

2.2.2 集群模式安装

在生产环境中,Elasticsearch通常以集群模式部署,以提高可用性和扩展性。每个节点需要独立的机器或虚拟机,并配置相同的cluster.name以加入同一集群。此外,还需配置node.name以区分不同节点。

2.2.3 Docker容器部署

Docker提供了一种轻量级的虚拟化方式,使得部署Elasticsearch变得极为便捷。通过以下命令,可以快速启动一个Elasticsearch容器:

docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.17.6

这将启动最新版本(示例中为7.17.6)的Elasticsearch,映射端口9200和9300,并以单节点模式运行。对于生产集群,需调整配置以支持多节点发现。

2.3 基本配置

2.3.1 elasticsearch.yml关键参数

Elasticsearch的主要配置文件是elasticsearch.yml,位于安装目录的config子目录下。

  • 网络设置:

    network.host: 0.0.0.0 # 允许所有IP访问
    http.port: 9200 # HTTP服务端口
    transport.tcp.port: 9300 # 集群内部通信端口
    
  • 路径配置:

    path.data: /var/lib/elasticsearch # 数据存储路径
    path.logs: /var/log/elasticsearch # 日志文件路径
    
  • 集群配置:

    cluster.name: my-application # 集群名称
    node.name: node-1 # 节点名称
    discovery.seed_hosts: ["host1", "host2"] # 初始发现节点列表
    cluster.initial_master_nodes: ["node-1", "node-2"] # 初始主节点列表
    

2.4 高级配置(深入)

2.4.1 高级网络配置

除了基本的网络端口配置,Elasticsearch还支持一系列高级网络设置,以适应不同的部署环境和安全需求。

  • 绑定主机与发布主机:

    network.bind_host: 192.168.1.10 # 绑定特定IP接收请求
    network.publish_host: _global_ # 自动发布所有绑定地址(集群内通信)
    
  • HTTPS与SSL/TLS加密:

    xpack.security.http.ssl.enabled: true
    xpack.security.http.ssl.key: /path/to/ssl/key.pem
    xpack.security.http.ssl.certificate: /path/to/ssl/cert.pem
    xpack.security.http.ssl.certificate_authorities: ["/path/to/ca.crt"]
    
  • 跨域资源共享(CORS):

    开启CORS以允许来自不同源的AJAX请求:

    http.cors.enabled: true
    http.cors.allow-origin: "*" # 允许所有源,生产中应具体指定
    
2.4.2 节点角色与职责

通过配置节点角色,可以细粒度地控制节点在集群中的职责,提升集群的效率和稳定性。

  • 节点类型配置:

    node.master: true # 允许该节点成为主节点
    node.data: true # 允许该节点存储数据
    node.ingest: true # 启用数据预处理管道
    
  • 专用协调节点:

    对于大型集群,建议设置专门的协调节点,不存储数据也不参与选举,仅负责路由请求:

    node.master: true
    node.data: false
    
2.4.3 高级集群配置

为了增强集群的稳定性和容错性,以下配置项值得深入探讨:

  • 分片与副本策略:

    通过合理配置索引的主分片数和副本数,可以平衡存储、查询速度与故障恢复能力:

    index.number_of_shards: 5 # 主分片数量
    index.number_of_replicas: 1 # 副本数量
    
  • 自定义发现机制:

    在云环境或复杂网络配置下,可能需要自定义节点发现方式:

    discovery.seed_providers: file
    discovery.seed_hosts: ["file:///etc/elasticsearch/discovery-seed-hosts.txt"]
    
  • 集群健康检查与恢复策略:

    通过配置 gateway.recover_after_nodes 和 cluster.routing.allocation.node_initial_primaries_recoveries 等参数,可以优化集群在节点故障后的恢复流程。

2.4.4 性能与资源限制

为了确保Elasticsearch在各种负载下都能稳定运行,合理的资源限制和性能调优同样重要。

  • 堆内存设置:

    通过-Xms和-Xmx参数调整JVM堆内存大小,推荐总内存的50%作为上限,避免频繁的GC操作影响性能。

    ES_JAVA_OPTS="-Xms4g -Xmx4g"
    
  • 线程池配置:

    thread_pool部分,可根据实际工作负载调整各类线程池的大小,如index, search, bulk等。

  • 磁盘水位线:

    配置cluster.routing.allocation.disk.threshold_enabled和相关水位线参数,避免磁盘空间不足导致的服务中断。

综上所述,Elasticsearch的配置不仅涉及基本的服务启动设置,还深入到网络、节点角色、集群管理、性能优化等多个层面。通过精细化配置,可以极大地提升系统的稳定性和效率,满足不同规模和场景的需求。接下来的章节,我们将进一步探讨Elasticsearch的核心功能——索引与文档操作,这是数据管理和检索的基础。

小结

本章详细介绍了Elasticsearch的安装与配置过程,从环境准备、安装指南到基本配置,为读者构建了一个从零开始部署Elasticsearch的完整路径。通过实践这些步骤,无论是单节点测试还是集群部署,都能得心应手。随着配置的深入,读者将逐步掌握Elasticsearch的运行原理,为下一章《第3章 索引与文档操作》中深入探索数据管理奠定坚实的基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/38518.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javascript/js中Array、Set、Map数据结构特性及用法

前言 本文温习前端开发中常见的3种数据结构:数组Array、有序集合Set、有序映射Map,并分别介绍其特性、用法示例 数组-Array 适用于存放和读取有序集合、不要求集合元素唯一性时;可通过索引快速访问元素,实现元素增删改查时 使…

山东省安管人员考核报名流程及免冠证件照处理方法

随着《交通运输工程施工单位主要负责人、项目负责人和专职安全生产管理人员安全生产考核管理办法》(以下简称《办法》)的发布,山东省的安管人员迎来了新的考核要求。本文将为您详细解读山东省安管人员考核的报名流程,并提供免冠证…

【MotionCap】搭建wsl2的pytorch环境

参考大神:wsl2-ubuntu版本 cuda下周cuda11.3 wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda_11.3.0_465.19.01_linux.run sudo sh cuda_11.3.0_465.19.01_linux.run cuda是开源的么?下15分钟

1、什么是SSD?

概念 SSD(Solid State Drive)固态硬盘,是以闪存为介质的存储设备;这里突出的重点是闪存。 闪存,也就是常说的flash,分为NOR 和 NAND; NOR的地址线和数据线分开,所以NOR芯片可以像…

vue html2canvas 将html转图片时遇到的问题解决

问题1: 场景为将富文本组件tinymce里的html内容转为图片,出现的问题是vue获取不到tinymce元素,无法直接使用html2canvas 解决1: 将富文本内容渲染出来,推荐做法是将提交按钮改为预览按钮,然后在另外的弹…

“一带一路”再奏强音!秘鲁总统博鲁阿尔特参访苏州金龙

6月27日下午,首次访华的秘鲁共和国总统博鲁阿尔特一行到苏州金龙参观访问,受到了苏州金龙总经理黄书平的热情接待。 黄书平(左二)向博鲁阿尔特(右一)介绍苏州金龙发展情况 从苏州金龙发展历程、产品技术研…

Python中的爬虫实战:百度知道爬虫

python作为一种强大的编程语言,可以帮助我们更便捷地获取互联网上的大量数据。其中,爬虫技术是极具代表性的一部分。爬虫可以在互联网上获取各种数据并进行分析,为我们提供大量的有价值的信息。在python中,爬虫技术也能够得到广泛…

使用Nginx反向代理KKFileView遇到问题

使用KKFileView 4.0 以上版本 在KKFileView官网上,关于使用Nginx代理,建议配置如下 一、修改Nacos 在Nginx的conf文件夹中修改 nginx.conf ,新加 红框内的IP地址为代理服务器地址(即安装KKFileView的服务器地址) 二、修改KKFil…

小程序打包

一、manifest.json文件添加小程序id 二、接口校验,后端接口添加正式上线,有域名的地址 然后到微信公众平台-开发管理-服务器域名处配置request合法域名,在 此处能够看到后端的baseUrl 三、项目部署 四、发版 在小程序编辑器里 此处可以在…

Android Studio 2023版本切换DNK版本

选择自己需要的版本下载 根目录下的配置路劲注意切换 build.gradle文件下的ndkVersion也要配好对应版本

数据可视化宝典:Jupyter Notebook与Matplotlib的完美融合

数据可视化宝典:Jupyter Notebook与Matplotlib的完美融合 在数据科学的世界里,数据可视化是一种艺术,它能够将复杂的数据转换为直观的图形,让洞察变得触手可及。Jupyter Notebook是一个强大的工具,它支持多种编程语言…

Postman接口测试工具的原理及应用详解(五)

本系列文章简介: 在当今软件开发的世界中,接口测试作为保证软件质量的重要一环,其重要性不言而喻。随着前后端分离开发模式的普及,接口测试已成为连接前后端开发的桥梁,确保前后端之间的数据交互准确无误。在这样的背景…

Parade接口芯片选型和应用,点击查看!

01 常见数据 / 媒体接口电路 接口电路是电子设备之间,电子设备与外围设备之间,电子设备内部部件之间起连接作用的逻辑电路,接口电路是设备处理器与外部设备进行信息交互的桥梁。 图1:常见高速数据/多媒体接口 1.1 USB接口 从最早…

代谢组数据分析十:偏相关分析

欢迎大家关注全网生信学习者系列: WX公zhong号:生信学习者Xiao hong书:生信学习者知hu:生信学习者CDSN:生信学习者2介绍 偏相关分析是一种统计方法,用于在控制一个或多个其他变量的影响下,分析两个变量之间的相关性。当研究者想要了解两个变量之间的内在联系,但又担心…

详细配置SQL Server的链接服务器(图文操作Mysql数据库)

目录 前言1. MySQL ODBC 驱动2. 配置 SQL Server 链接服务器3. 彩蛋前言 此处配置以及安装没有什么理论知识 所以直奔主题,跟着以下步骤配置安装即可 需求:准备在10.197.0.110中链接外部的10.197.0.96的mysql数据源 已默认在10.197.0.96中安装了MySQL数据库并且知道其连接信…

PPT中的文字跟随Excel动态变化,且保留文字格式

今天协助客户解决了一个有趣的问题,这里记录一下,以此共勉。 目录 1. 提出问题2. 此功能的应用场景3. 开始制作4. 注意事项5. 若遇到任何问题 1. 提出问题 PPT的图表是可以引用Excel的,那PPT的文本是否可以引用Excel实现动态更新呢&#xff…

MWCSH 2024丨美格智能亮相上海世界移动通信大会,加速5G+AIoT应用进程

6月26日—28日全球通信领域最具规模和影响力的通信盛事—2024MWC上海世界移动通信大会在上海新国际博览中心隆重举行。MWC上海是亚洲连接生态系统的风向标,本届大会以“未来先行(Future First)”为主题,聚焦“超越5G”“人工智能经…

Quectel EM05-CE 模块测试

作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生在读,研究方向无线联邦学习 擅长领域:驱动开发,嵌入式软件开发,BSP开发 作者主页:一个平凡而乐于分享的小比特的个人主页…

HarmonyOS开发实战:加密类组件使用方法-API

加密类组件 模块介绍RSA提RSA供生成密钥加解密验签等系列方法(基于HarmonyOS API)AES提供AES生成密钥加解密等系列方法(基于HarmonyOS API)DES提供3DES生成密钥加解密等系列方法(基于HarmonyOS API)SM2提供SM2生成密钥加解密等系列方法(基于HarmonyOS API)SM3提供SM3生成摘要,…

蜜雪冰城小程序逆向

app和小程序算法一样 小程序是wasm