什么是Elasticsearch?

Elasticsearch 是一个开源的分布式搜索和分析引擎,构建在 Apache Lucene 的基础上。它提供了一个分布式多租户的全文搜索引擎,具有实时分析功能。Elasticsearch 最初是用于构建全文搜索引擎,但它的功能已经扩展到包括日志分析、应用程序性能监控、地理信息系统等领域。

以下是 Elasticsearch 的一些主要特点和用途:

  1. 全文搜索:Elasticsearch 提供强大的全文搜索功能,可以快速搜索大量文档并返回相关性高的结果。

  2. 分布式:Elasticsearch 是一个分布式系统,可以水平扩展到数百台服务器,处理大规模的数据集。

  3. 实时性:Elasticsearch 提供实时搜索和分析功能,可以在数据被索引之后立即可用。

  4. 多功能:除了全文搜索之外,Elasticsearch 还提供了聚合、过滤、地理位置搜索、自定义标记、实时分析等功能。

  5. 可扩展性:Elasticsearch 可以通过插件扩展功能,满足不同场景的需求。

  6. 易用性:Elasticsearch 提供了简单的 RESTful API,易于集成到各种应用程序中,并提供了丰富的客户端库。

  7. 日志分析:Elasticsearch 通常与 Logstash 和 Kibana(称为 ELK 栈)一起使用,用于实时日志分析和可视化。

  8. 应用程序性能监控:Elasticsearch 还可以用于监控应用程序性能,收集和分析指标数据

Elasticsearch的应用场景?

Elasticsearch 的应用场景非常广泛,以下是一些常见的应用场景:

  1. 全文搜索引擎:Elasticsearch 提供了强大的全文搜索功能,可以用于构建各种类型的搜索引擎,包括网站搜索、文档搜索、产品搜索等。

  2. 日志和事件分析:Elasticsearch 可以用于实时收集、存储和分析大量的日志和事件数据。它与 Logstash 和 Kibana 一起组成 ELK 栈,用于实时日志分析和可视化。

  3. 指标和性能监控:Elasticsearch 可以用于收集和分析应用程序和系统的性能指标,帮助开发人员和运维团队监控应用程序的健康状况,并快速定位问题。

  4. 内容推荐:基于用户行为和内容特征,Elasticsearch 可以用于实现个性化的内容推荐系统,提供用户喜好的文章、产品或媒体。

  5. 电商搜索和推荐:在电商网站中,Elasticsearch 可以用于实现快速、准确的产品搜索,以及基于用户行为的个性化推荐。

Elasticsearch 的架构设计主要涉及以下几个方面:

1. 分布式架构

Elasticsearch 是一个分布式系统,可以水平扩展到多个节点,处理大规模的数据集。它将索引分成多个分片(shard),每个分片可以分布在集群中的不同节点上,从而实现数据的分布式存储和处理。此外,Elasticsearch 还支持副本(replica),用于提高数据的可靠性和可用性。

2. 节点角色

在 Elasticsearch 集群中,每个节点可以担任不同的角色:

  • 主节点(Master Node):负责集群的管理和协调,包括创建和删除索引、分配分片、故障检测和节点加入/退出等操作。

  • 数据节点(Data Node):存储数据的节点,负责索引和搜索数据。每个数据节点都保存部分数据分片,并处理搜索请求和索引请求。

  • 协调节点(Coordinating Node):处理客户端请求的节点,负责路由请求到适当的数据节点,并将结果汇总返回给客户端。

3. 索引和分片

数据在 Elasticsearch 中存储在索引(Index)中,每个索引可以分成多个分片。索引是逻辑上的数据集合,分片是数据的物理存储单元。分片可以水平扩展到多个节点上,实现数据的分布式存储和并行处理。

4. 倒排索引

Elasticsearch 使用倒排索引(Inverted Index)来加速搜索操作。倒排索引是一种数据结构,可以快速地找到包含特定词条的文档。对于每个词条,倒排索引会记录该词条出现在哪些文档中,以及在文档中的位置信息。

5. RESTful API

Elasticsearch 提供了基于 HTTP 的 RESTful API,使用户可以使用简单的 HTTP 请求与 Elasticsearch 进行交互。通过 RESTful API,用户可以执行索引、搜索、聚合、删除等操作,以及管理集群和节点。

6. 插件机制

Elasticsearch 提供了丰富的插件机制,允许用户扩展和定制其功能。用户可以编写自定义插件,添加新的功能或改进现有功能,例如添加新的分析器、查询语法、存储后端等。

自动化部署

部署之前准备必要的jdk,安装包已经打包好了再网盘里面


链接:https://pan.baidu.com/s/1Kfntr0B-vJNIs25ZgqwCdA
提取码:4fsf

到服务器进行解压

tar -zxvf elaticsearch.tar.gz
将下载下来的传到要部署的节点执行
bash -x deploy_elaticsearch.sh ip1 ip2 ip3 1

其中脚本内容如下所示

#!/bin/bash

# 创建esadmin用户,并设置密码
useradd esadmin && echo "esadmin:Ebupt#202401f" | chpasswd

# 创建安装目录并解压Elasticsearch
mkdir -p /opt/elasticsearch/
tar -zxvf elasticsearch-7.15.1-linux-x86_64.tar.gz -C /opt/elasticsearch/

# 创建Elasticsearch数据、日志和仓库目录
mkdir -p /opt/elasticsearch/elasticsearch-7.15.1/es/{data,logs,repo}

# 备份旧的配置文件并写入新的配置文件
mv /opt/elasticsearch/elasticsearch-7.15.1/config/elasticsearch.yml /opt/elasticsearch/elasticsearch-7.15.1/config/elasticsearch.yml.bak
cat <<EOF | sudo tee /opt/elasticsearch/elasticsearch-7.15.1/config/elasticsearch.yml > /dev/null
# 集群和节点配置
cluster.name: es-cluster
node.name: node-$4
node.master: true
node.data: true
node.ingest: true

# 网络和发现配置
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.seed_hosts: ["$1", "$2", "$3"]
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
discovery.zen.fd.ping_interval: 30s
discovery.zen.fd.ping_timeout: 120s
discovery.zen.fd.ping_retries: 6

# JVM调优
#bootstrap.memory_lock: true
#indices.memory.index_buffer_size: 50%

# 索引和搜索配置
#index.number_of_shards: 5
#index.number_of_replicas: 1
#indices.queries.cache.size: 20%

# 磁盘和文件系统配置
path.data: /opt/elasticsearch/elasticsearch-7.15.1/es/data
path.logs: /opt/elasticsearch/elasticsearch-7.15.1/es/logs
path.repo: /opt/elasticsearch/elasticsearch-7.15.1/es/repo

# 监控和性能调优
xpack.monitoring.enabled: true
thread_pool.search.size: 50
search.max_buckets: 10000

# HTTP跨域设置
http.cors.enabled: true
http.cors.allow-origin: "*"
EOF

# 设置Java参数
echo "-Xms3g" >> /opt/elasticsearch/elasticsearch-7.15.1/config/jvm.options
echo "-Xmx3g" >> /opt/elasticsearch/elasticsearch-7.15.1/config/jvm.options

# 内核优化
echo "esadmin soft nofile 65536" >> /etc/security/limits.conf
echo "esadmin hard nofile 131072c" >> /etc/security/limits.conf
echo "esadmin soft nproc 4096" >> /etc/security/limits.conf
echo "esadmin hard nproc 4096" >> /etc/security/limits.conf
echo "elasticsearch soft memlock unlimited" >> /etc/security/limits.conf
echo "elasticsearch hard memlock unlimited" >> /etc/security/limits.conf

# 查看当前ulimit配置
ulimit -a

#内核优化2
echo "vm.max_map_count=655360" >> /etc/sysctl.conf && sysctl -p

#修改目录权限
chmod -R esadmin /opt/elasticsearch

#添加es_java_home
cat << EOF | sudo tee -a /etc/profile
export ES_JAVA_HOME=/opt/elasticsearch/elasticsearch-7.15.1/jdk
EOF
source /etc/profile
# 使用esadmin用户启动Elasticsearch
su - esadmin -c "/opt/elasticsearch/elasticsearch-7.15.1/bin/elasticsearch -d"

自动化部署elasticsearch三节点集群的更多相关文章

  1. PostgreSQL 三节点集群故障模拟及恢复

    PostgreSQL 三节点集群故障模拟及恢复 (postgreSQL9.5.1) 正常状态: 10.2.208.10:node1:master 10.2.208.11:node2:standby1同 ...

  2. Ambari安装之部署单节点集群

    前期博客 大数据领域两大最主流集群管理工具Ambari和Cloudera Manger Ambari架构原理 Ambari安装之Ambari安装前准备(CentOS6.5)(一) Ambari安装之部 ...

  3. CentOS7.6搭建Hadoop2.7.2运行环境-三节点集群模式

    一 环境准备 1.    准备机器 2.    修改静态IP 3.    修改主机名 4.    关闭防火墙 5.    创建普通用户hadoop 添加hadoop用户 [root@hadoop102 ...

  4. k8s(docker-desktop)简单搭建zookeeper三节点集群

    前提 已经安装了docker-desktop,并且其中的kubernetes启动运行的.或者安装了k8s环境就行 可以正常下载dockerhub的镜像,这里采用了dockerhub官方制作的镜像 启动 ...

  5. zookeeper三节点集群安装记录

    以下是3个节点的zk安装记录. 下载 下载地址: http://mirrors.shu.edu.cn/apache/zookeeper/ cd /data/opt/zk wget http://mir ...

  6. MySQL主从复制原理及配置详细过程以及主从复制集群自动化部署的实现

    一.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...

  7. 使用Elasticsearch Operator快速部署Elasticsearch集群

    转载自:https://www.qikqiak.com/post/elastic-cloud-on-k8s/ 随着 kubernetes 的快速发展,很多应用都在往 kubernetes 上面迁移,现 ...

  8. Docker部署Elasticsearch集群

    http://blog.sina.com.cn/s/blog_8ea8e9d50102wwik.html Docker部署Elasticsearch集群 参考文档: https://hub.docke ...

  9. Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(三):搭建jenkins集群环境

    写在前面 大家可以看到本文的配图,左边是jenkins单机环境,右边是jenkins集群.个中区别,不言而喻,形象生动. 前面我分别介绍了.net core 程序的多种部署方式(无绝对孰优孰劣): 1 ...

  10. 基于saltstack自动化部署高可用kubernetes集群

    SaltStack自动化部署HA-Kubernetes 本项目在GitHub上,会不定期更新,大家也可以提交ISSUE,地址为:https://github.com/skymyyang/salt-k8 ...

随机推荐

  1. 第十七篇:Django入门

    一.模板 二.BootStrap使用 三.web框架简绍 四.Django使用 五.创建APP 六.APP各目录功能 七.静态文件处理 八.模板语言 九.请求过程

  2. c# MVC BundleConfig详解

    前言 因为有很多库在.net core还没有实现迁移,所以呢,我们有时候还是需要的. 这些事什么意思呢? 举一个例子: bundles.Add(new StyleBundle("~/Cont ...

  3. 物联网浏览器(IoTBrowser)-整合机器学习yolo框架实现车牌识别

    最近一段时间在研究AI技术在.Net平台的使用,目前AI绝大部分是使用Python开发,偶然一次在头条看到一篇ML.NET的介绍,是Net平台下开放源代码的跨平台机器学习框架.ML.NET详细介绍 h ...

  4. Git中 fork, clone,branch

    一.是什么 fork fork,英语翻译过来就是叉子,动词形式则是分叉,如下图,从左到右,一条直线变成多条直线 转到git仓库中,fork则可以代表分叉.克隆 出一个(仓库的)新拷贝 包含了原来的仓库 ...

  5. 第十課-Change Mirth Connect To Mariadb

    随着接口部署数量和交互数据越来越多,原来基于Mirth Connect默认derby嵌入式数据库下运行越来越不能满足高性能.高可靠等线上刚性需求:故需要切换Mirth Connect的运行后台数据库. ...

  6. 4.CSS层次选择器

    1.后代选择器:在某个元素的后面 1 /*后代选择器*/ 2 body p{ 3 background: crimson; 4 } 2.子选择器:仅一代 1 /*子选择器*/ 2 body>p{ ...

  7. 牛客网-SQL专项训练23

    ①假设创建新用户nkw,现在想对于任何IP的连接,仅拥有user数据库里面的select和insert权限,则列表语句中能够实现这一要求的语句是(B) 解析: 考察知识点-数据库授权命令: GRANT ...

  8. 阿里云RemoteShuffleService新功能:AQE和流控

    ​简介:阿里云EMR自2020年推出Remote Shuffle Service(RSS)以来,帮助了诸多客户解决Spark作业的性能.稳定性问题,并使得存算分离架构得以实施.为了更方便大家使用和扩展 ...

  9. Spring Boot Admin 集成诊断利器 Arthas 实践

    简介: Arthas 是 Alibaba 开源的 Java 诊断工具,具有实时查看系统的运行状况:查看函数调用参数.返回值和异常:在线热更新代码:秒解决类冲突问题:定位类加载路径:生成热点:通过网页诊 ...

  10. Flink 如何实时分析 Iceberg 数据湖的 CDC 数据

    简介: 数据湖的架构中,CDC 数据实时读写的方案和原理 本文由李劲松.胡争分享,社区志愿者杨伟海.李培殿整理.主要介绍在数据湖的架构中,CDC 数据实时读写的方案和原理.文章主要分为 4 个部分内容 ...