【基础篇】第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.mfbz.cn/a/761233.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大模型+多模态合规分析平台,筑牢金融服务安全屏障

随着金融市场的快速发展,金融产品和服务日趋多样化,消费者面临的风险也逐渐增加。 为保护消费者权益,促进金融市场长期健康稳定发展,国家监管机构不断加强金融监管,出台了一系列法律法规和政策文件。对于金融从业机构…

代码托管服务:GitHub、GitLab、Gitee

目录 引言GitHub:全球最大的代码托管平台概述功能特点适用场景 GitLab:一体化的开发平台概述功能特点适用场景 Gitee(码云):中国本土化的代码托管服务概述功能特点适用场景 功能对比结论 引言 在现代软件开发中&#…

Pickle, SafeTensor, GGML和GGUF

如今,大型语言模型的使用方式有以下几种: 作为 OpenAI、Anthropic 或主要云提供商托管的专有模型的 API 端点作为从 HuggingFace 的模型中心下载的模型工件和/或使用 HuggingFace 库进行训练/微调并托管在本地存储中作为针对本地推理优化的格式的模型工…

机器学习 中数据是如何处理的?

数据处理是将数据从给定形式转换为更可用和更理想的形式的任务,即使其更有意义、信息更丰富。使用机器学习算法、数学建模和统计知识,整个过程可以自动化。这个完整过程的输出可以是任何所需的形式,如图形、视频、图表、表格、图像等等&#…

Linux基础篇——目录结构

基本介绍 Linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录"/",然后在根目录下再创建其他的目录 在Linux中,有一句经典的话:在Linux世界里,一切皆文件 Linux中根目录下的目录 具体的…

PHP留守儿童关爱之家网站-计算机毕业设计源码11079

目录 1 绪论 1.1 研究背景 1.2研究意义 1.3 论文结构与章节安排 2 留守儿童关爱之家网站系统分析 2.1 可行性分析 2.2 系统功能分析 2.3 系统用例分析 2.4 系统流程和逻辑 2.5本章小结 3 留守儿童关爱之家网站总体设计 3.1系统结构设计 3.2系统功能模块设计 3.2 数…

基于SSM网上拍卖系统

设计技术: 开发语言:Java数据库:MySQL技术:SpringMybatisSpringMvc 工具:IDEA、Maven、Navicat 主要功能 管理员功能有个人中心,用户管理,卖家管理,商品类型管理,拍卖…

EDA 虚拟机 Synopsys Sentaurus TCAD 2017.09 下载

下载地址(制作不易,下载使用需付费,不能接受的请勿下载): 链接:https://pan.baidu.com/s/1327I58gvV1usWSqSrG7KXw?pwdo03i 提取码:o03i

AI网络爬虫001:用kimichat自动批量提取网页内容

文章目录 一、准备工作二、输入内容三、输出内容一、准备工作 在网页中按下F12键,查看定位网页元素 二、输入内容 在kimi中输入提示词: 你是一个Python编程专家,要完成一个爬取网页内容的Python脚本,具体步骤如下:在F盘新建一个Excel文件:提示词.xlsx打开网页:https:…

http.cookiejar.LoadError: Cookies file must be Netscape formatted,not JSON.解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

【Linux】线程周边002之线程安全

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.Linux线程互斥 1…

Java实现日志全链路追踪.精确到一次请求的全部流程

广大程序员在排除线上问题时,会经常遇见各种BUG.处理这些BUG的时候日志就格外的重要.只有完善的日志才能快速有效的定位问题.为了提高BUG处理效率.我决定在日志上面优化.实现每次请求有统一的id.通过id能获取当前接口的全链路流程走向. 实现效果如下: 一次查询即可找到所有关…

数据分析入门指南:从基础概念到实际应用(一)

随着数字化时代的来临,数据分析在企业的日常运营中扮演着越来越重要的角色。从感知型企业到数据应用系统的演进,数据驱动的业务、智能优化的业务以及数智化转型成为了企业追求的目标。在这一过程中,数据分析不仅是技术的运用,更是…

竹云助力雁塔城运集团实现西安市城投企业数据资产入表第一单!

近日,雁塔区城运集团联合陕数集团、深圳竹云科技股份有限公司等机构,顺利完成数据资产确权登记和数据资产入表工作,成为西安市首个城投数据资产入表案例,并获得陕西丝路数据交易中心颁发的数据资产登记证书。 近年来,…

使用Vue-cli脚手架创建uni-app项目(Vue2版本)

文章目录 前言准备工作接下来创建我们的 uni-app 项目 前言 uni-app官方说除了HBuilderX可视化界面,也可以使用 cli 脚手架,可以通过 vue-cli 创建 uni-app 项目。 uni-app官网文档 准备工作 需要安装 node.js 与 vue-cli 脚手架 我是用的版本如下 no…

【Python】从基础到进阶(二):了解Python语言基础以及数据类型转换、基础输入输出

🔥 个人主页:空白诗 文章目录 一、引言二、基本数据类型转换1. 隐式转换2. 显式转换 三、基本输入输出1. 输入(input)2. 输出(print)3. 案例:输入姓名、年龄、身高以及体重,计算BMI指…

ICMAN触摸芯片之隔空感应

ICMAN触摸芯片之隔空感应 ICMAN触摸芯片满足工业级设计标准, 可过CS10V,ESD8kV,EFT4kV测试, 有超强稳定性和抗干扰能力 , 多用在普通触摸按键开关、大金属触摸及高灵敏度应用场合。 可根据实际应用,有低…

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

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

牛客小白月赛97 (个人题解)(待补完)

前言: 前天晚上写的一场牛客上比赛,虽然只写出了三道,但比起之前的成绩感觉自己明显有了一点进步了,继续努力吧, 正文: 链接:牛客小白月赛97_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞…

短信接口API的选择因素?有哪些使用方法?

短信接口API的集成难点是什么?如何保障API安全性? 短信接口API已经成为许多企业和开发者的关键工具,市场上有许多不同的短信接口API可供选择,这使得选择适合的API变得尤为重要。AoKSend将探讨在选择短信接口API时需要考虑的主要因…