elasticsearch介绍和部署

1 elasticsearch介绍

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。可以很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。
Elasticsearch是与Logstash的数据收集和日志解析引擎以及名为Kibana的分析和可视化平台一起开发的。这三个产品被设计成一个集成解决方案,称为“Elastic Stack”(以前称为“ELK stack”)。
Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。Elasticsearch是分布式的,这意味着索引可以被分成分片,每个分片可以有0个或多个副本。每个节点托管一个或多个分片,并充当协调器将操作委托给正确的分片。再平衡和路由是自动完成的。相关数据通常存储在同一个索引中,该索引由一个或多个主分片和零个或多个复制分片组成。一旦创建了索引,就不能更改主分片的数量。

2 ES相关的术语介绍

在这里插入图片描述

**index:**也叫索引,一个索引最少要有一个分片。指的是逻辑的存储和读取单元。一个索引也可以叫做1个文档名

**shard:**分片,用于实际存储数据信息。索引数据可以分布到集群中的不同节点,每个索引可以分为多个分片。分片可以提高数据存储和查询的效率

**replica:**副本,用于索引分片冗余,以及提高数据的可靠性和查询性能。副本可以分布在不同的节点上,确保即使某些节点故障,数据也不会丢失

**primary shard:**主分片,负责数据的读写

**replica shard:**副本分片,从primary shard同步数据且,负责读的负载均衡。也就是说读数据时,会往多个副本读取。

**allocation:**把索引的不同分片分配到整个集群的过程

**document:**文档,用于的实际数据的载体,分为元数据和源数据

  • 源数据:指的是用户实际的存储。数据存储在"_source"字段中

  • 元数据:用于描述数据的数据,比如_index,_id,_type,_source

ES集群颜色和含义:

  • green代表所有的主分片和副本分片都正常访问

  • yellow代码部分副本分片无法访问

    • 例如,副本数量大于集群数量。导致没有可用节点分配
  • red代表部分主分片无法访问

ES相关端口:

  • 9200,支持http|https协议,对外部提供服务访问
  • 9300,支持tcp协议,对内部ES集群进行数据传输

2 elasticsearch的安装

01 单点方式部署

IP主机名内存
10.0.0.091elk912G

提示:elasticsearch的deb安装包集成了java环境,因此安装包体积较大,也可以二进制部署,软件和java环境分开部署。

1.以7.17.22版本为例:wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.22-amd64.deb

2.安装软件包

dpkg -i elasticsearch-7.17.22-amd64.deb 

3.修改配置文件:vim /etc/elasticsearch/elasticsearch.yml

# 指定集群的名称,每个ES集群的名称要唯一
17 cluster.name: wzy-com

# 数据的存储路径,默认即可
33 path.data: /var/lib/elasticsearch

# 日志的存储路径,默认即可
37 path.logs: /var/log/elasticsearch

# 指定监听本地的地址,监听全部则写成 0.0.0.0
56 #network.host: 10.0.0.91

# 对外的访问端口
http.port: 9200

# 集群之间数据传输端口
61 #http.port: 9200

# 部署集群为单点类型
discovery.type: "single-node"

简化的配置为:

[root@elk91~]# yy /etc/elasticsearch/elasticsearch.yml
cluster.name: wzy-com
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300
discovery.type: "single-node"

3.启动es

systemctl restart elasticsearch.service

[root@elk91~]# netstat -antlp | grep 9[23]00
tcp6       0      0 :::9300                 :::*                    LISTEN      3235/java           
tcp6       0      0 :::9200                 :::*                    LISTEN      3235/java

4.如果启动失败,就去看日志:/var/log/elasticsearch/wzy-com.log;或者journalctl -fu elasticsearch

5.访问es

[root@elk91~]# curl http://10.0.0.91:9200
{
  "name" : "elk91",
  "cluster_name" : "wzy-com",
  "cluster_uuid" : "ypPsMv8WQOmQZ3H1VSF-Xw",
  "version" : {
    "number" : "7.17.22",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "38e9ca2e81304a821c50862dafab089ca863944b",
    "build_date" : "2024-06-06T07:35:17.876121680Z",
    "build_snapshot" : false,
    "lucene_version" : "8.11.3",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

6.卸载es

dpkg命令说明:

  • dpkg -r 卸载

  • dpkg -P 卸载并移除配置文件

卸载后再使用rm -rf /tmp*

02 集群方式部署

1.环境准备

IP地址主机名
10.0.0.91elk91
10.0.0.92elk92
10.0.0.93elk93
  • 所有节点设置正确的时间:ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  • 安装ES软件

1.所有节点修改配置文件为:

cat >/etc/elasticsearch/elasticsearch.yml <<EOF
cluster.name: elk-wzy
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300

# 配置ES集群的服务发现列表主机
discovery.seed_hosts: ["10.0.0.91","10.0.0.92","10.0.0.93"]

# 配置ES集群启动时参与master选举的节点
cluster.initial_master_nodes: ["10.0.0.91","10.0.0.92","10.0.0.93"]
EOF

最后启动es:systemctl enable elasticsearch --now

2.验证是否为集群还是脑裂。访问任意1个节点,看到主机列表为3个节点就是搭建成功了。否则卸载重新搭建

[root@elk91~]# curl -s 10.0.0.93:9200/_cat/nodes
10.0.0.91 29 96 5 0.66 0.53 0.44 cdfhilmrstw - elk91
10.0.0.93 25 96 2 0.60 0.43 0.22 cdfhilmrstw - elk93
10.0.0.92 48 96 3 0.47 0.57 0.32 cdfhilmrstw * elk92
# 卸载
systemctl disable elasticsearch --now
dpkg -P elasticsearch
rm -rf /tmp/* /var/{log,lib}/elasticsearch

# 安装
dpkg -i elasticsearch-7.17.22-amd64.deb
cat >/etc/elasticsearch/elasticsearch.yml <<EOF
cluster.name: efk-wzy
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300
discovery.seed_hosts: ["10.0.0.91","10.0.0.92","10.0.0.93"]
cluster.initial_master_nodes: ["10.0.0.91","10.0.0.92","10.0.0.93"]
EOF
systemctl enable elasticsearch --now

03 ES的堆内存设置

此操作为可选项:

-Xms-Xmx 是 JVM(Java 虚拟机)启动参数,用于设置堆内存(Heap Memory)的初始大小和最大大小。这两个参数直接影响 Java 应用的性能和内存管理。建议设置为主机内存的一半

修改 /etc/elasticsearch/jvm.options ,

...
-Xms4096m
-Xmx4096m
...

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

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

相关文章

在SpringBoot项目中集成MongoDB

文章目录 1. 准备工作2. 在SpringBoot项目中集成MongoDB2.1 引入依赖2.2 编写配置文件2.3 实体类 3. 测试4. 文档操作4.1 插入操作4.1.1 单次插入4.1.2 批量插入 4.2 查询操作4.2.1 根据id查询4.2.2 根据特定条件查询4.2.3 正则查询4.2.4 查询所有文档4.2.5 排序后返回 4.3 删除…

Linux相关概念和易错知识点(21)(软硬链接、动静态库)

目录 1.软硬链接 &#xff08;1&#xff09;软链接 &#xff08;2&#xff09;硬链接 ①实现方式及其功能 ②硬链接在目录中的运用 ③计算子目录数量 2.动静态库 &#xff08;1&#xff09;动态库 ①动态链接和静态链接 ②动态库的实现 ③系统查找动态库问题 ④解决…

Leetcode 组合

使用回溯来解决此问题。 提供的代码使用了回溯法&#xff08;Backtracking&#xff09;&#xff0c;这是一种通过递归探索所有可能解的算法思想。以下是对算法思想的详细解释&#xff1a; 核心思想&#xff1a; 回溯法通过以下步骤解决问题&#xff1a; 路径选择&#xff1a…

工具学习_Docker

0. Docker 简介 Docker 是一个开源平台&#xff0c;旨在帮助开发者构建、运行和交付应用程序。它通过容器化技术将应用程序及其所有依赖项打包在一个标准化的单元&#xff08;即容器&#xff09;中&#xff0c;使得应用程序在任何环境中都能保持一致的运行效果。Docker 提供了…

【从零开始的LeetCode-算法】3233. 统计不是特殊数字的数字数量

给你两个 正整数 l 和 r。对于任何数字 x&#xff0c;x 的所有正因数&#xff08;除了 x 本身&#xff09;被称为 x 的 真因数。 如果一个数字恰好仅有两个 真因数&#xff0c;则称该数字为 特殊数字。例如&#xff1a; 数字 4 是 特殊数字&#xff0c;因为它的真因数为 1 和…

day06(单片机高级)PCB设计

目录 PCB设计 PCB设计流程 元器件符号设计 原理图设计 元器件封装设计 元器件库使用 PCB设计 目的&#xff1a;学习从画原理图到PCB设计的整个流程 PCB设计流程 元器件符号设计 元器件符号&#xff1a;这是电子元器件的图形表示&#xff0c;用于在原理图中表示特定的元器件。例…

Oracle JDK(通常简称为 JDK)和 OpenJDK区别

Java 的开发和运行时环境主要由两种实现主导&#xff1a;Oracle JDK&#xff08;通常简称为 JDK&#xff09;和 OpenJDK。尽管它们都基于同一个代码库&#xff0c;但在一些关键点上有所区别。以下是详细的对比&#xff1a; 1. 基础代码 Oracle JDK&#xff1a; 基于 OpenJD…

LeetCode 101题集(随时更新)

题集来源&#xff1a;GitHub - changgyhub/leetcode_101: LeetCode 101&#xff1a;力扣刷题指南 使用C完成相关题目&#xff0c;以训练笔试 贪心 采用贪心的策略&#xff0c;保证每次操作都是局部最优的&#xff0c;从而使最后得到的结果是全局最优的。 分配问题 455. 分发饼…

渗透测试笔记——shodan(4)

声明&#xff1a; 学习视频来自B站up主 【泷羽sec】有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&am…

06 —— Webpack优化—压缩过程

css代码提取后想要压缩 —— 使用css-minimizer-webpack-plugin插件 下载 css-minimizer-webpack-plugin 本地软件包 npm install css-minimizer-webpack-plugin --save-dev 配置 webpack.config.js 让webpack拥有该功能 const CssMinimizerPlugin require(css-minimizer-…

【Android】android compat理解

1&#xff0c;前提 即便是在同一手机上安装的不同apk&#xff0c;其编译的apk不同&#xff0c;也会导致行为上的差异。如SDK34有限制后台启动&#xff0c;但如果安装的apk所依赖的sdk是33&#xff0c;则不会表现出此差异。这是如何实现的呢&#xff1f;其实&#xff0c;本质是…

蓝桥杯每日真题 - 第21天

题目&#xff1a;(空间) 题目描述&#xff08;12届 C&C B组A题&#xff09; 解题思路&#xff1a; 转换单位&#xff1a; 内存总大小为 256MB&#xff0c;换算为字节&#xff1a; 25610241024268,435,456字节 计算每个整数占用空间&#xff1a; 每个 32 位整数占用…

MongoDB进阶篇-索引(索引概述、索引的类型、索引相关操作、索引的使用)

文章目录 1. 索引概述2. 索引的类型2.1 单字段索引2.2 复合索引2.3 其他索引2.3.1 地理空间索引&#xff08;Geospatial Index&#xff09;2.3.2 文本索引&#xff08;Text Indexes&#xff09;2.3.3 哈希索引&#xff08;Hashed Indexes&#xff09; 3. 索引相关操作3.1 查看索…

做一个FabricJS.cc的中文文档网站——面向markdown编程

&#x1f4e2;欢迎点赞 &#xff1a;&#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff0c;赐人玫瑰&#xff0c;手留余香&#xff01;&#x1f4e2;本文作者&#xff1a;由webmote 原创&#x1f4e2;作者格言&#xff1a;新的征程&#xff0c;用爱发电&#…

自动驾驶之激光雷达

这里写目录标题 1 什么是激光雷达2 激光雷达的关键参数3 激光雷达种类4 自动驾驶感知传感器5 激光雷达感知框架5.1 pointcloud_preprocess5.2 pointcloud_map_based_roi5.3 pointcloud_ground_detection5.4 lidar_detection5.5 lidar_detection_filter5.6 lidar_tracking 1 什么…

Label-studio-ml-backend 和YOLOV8 YOLO11自动化标注,目标检测,实例分割,图像分类,关键点估计,视频跟踪

这里写目录标题 1.目标检测 Detection2.实例分割 segment3.图像分类 classify4.关键点估计 Keypoint detection5.视频帧检测 video detect6.视频帧分类 video classify7.旋转目标检测 obb detect8.替换yolo11模型 给我点个赞吧&#xff0c;谢谢了附录coco80类名称 笔记本 华为m…

Laravel对接SLS日志服务

Laravel对接SLS日志服务&#xff08;写入和读取&#xff09; 1、下载阿里云的sdk #通过composer下载 composer require alibabacloud/aliyun-log-php-sdk#对应的git仓库 https://github.com/aliyun/aliyun-log-php-sdk2、创建sdk请求的service <?phpnamespace App\Ser…

uniapp接入高德地图

下面代码兼容安卓APP和H5 高德地图官网&#xff1a;我的应用 | 高德控制台 &#xff0c;绑定服务选择《Web端(JS API)》 /utils/map.js 需要设置你自己的key和安全密钥 export function myAMap() {return new Promise(function(resolve, reject) {if (typeof window.onLoadM…

初识WGCLOUD - 监测磁盘空间还能使用多久

WGCLOUD是一款免费开源的运维监控软件&#xff0c;性能优秀&#xff0c;部署简单&#xff0c;轻巧使用&#xff0c;支持大部分的Linux和Windows、安卓、MacOS等平台安装部署 最近发布的新版本 v3.5.4&#xff0c;WGCLOUD新增了可以自动计算每个磁盘剩余空间的可使用天数&#x…

【Xbim+C#】创建圆盘扫掠IfcSweptDiskSolid

基础回顾 https://blog.csdn.net/liqian_ken/article/details/143867404 https://blog.csdn.net/liqian_ken/article/details/114851319 效果图 代码示例 在前文基础上&#xff0c;增加一个工具方法&#xff1a; public static IfcProductDefinitionShape CreateDiskSolidSha…