Elasticsearch安装和Kibana安装

news/2025/10/18 16:27:15/文章来源:https://www.cnblogs.com/ctrlc-ctrlv/p/19147216

1. 逻辑架构(面向用户的数据视图)

这是用户在使用和操作 Elasticsearch 时最常接触到的概念层次,类似于传统数据库中的数据库、表、行。

  • 文档

    • 是什么: 最基本的数据单元,是一个可被索引的信息单元。

    • 格式: 采用 JSON 格式表示。例如,一条用户信息、一篇商品描述、一条日志记录都可以是一个文档。

    • 类比: 关系型数据库中的 一行记录。

    • 示例:

      json
      {"name": "张三","age": 30,"hobbies": ["阅读", "游泳"],"address": {"city": "北京","street": "海淀区"}
      }
  • 索引

    • 是什么: 具有相似特征的文档的集合。它是进行数据存储、查询、更新等操作的主要载体。

    • 类比: 关系型数据库中的 一张表。

    • 特点: 每个索引必须有一个唯一的名称,所有操作都是通过索引名来进行的。

  • 类型

    • 历史: 在 7.x 版本之前,一个索引中可以定义多种类型,类似于表中的不同结构。例如,一个 blog 索引下可以有 user 类型和 article 类型。

    • 现状: 在 Elasticsearch 7.x 及之后版本中,一个索引只能包含一个类型,且默认名为 _doc。这个概念正在被逐渐废弃。所以,现在最佳实践是:一个索引只存储一种类型的文档。

  • 映射

    • 是什么: 定义了索引中的文档包含哪些字段,以及每个字段的数据类型和属性。它相当于表的模式。

    • 作用: 告诉 Elasticsearch 如何解释和处理文档中的各个字段。例如,某个字段是 text 类型(需要分词,用于全文搜索),还是 keyword 类型(不分词,用于精确匹配和聚合)。

    • 示例: 为 user 索引定义的映射可能规定 name 是 text 类型,age 是 integer 类型。

逻辑结构总结:
索引 (Index) > 类型 (Type,现已基本弃用) > 文档 (Document) > 字段 (Field),而 映射 (Mapping) 是定义这些字段规则的蓝图。


2. 物理架构(分布式系统的底层实现)

这是 Elasticsearch 作为分布式搜索引擎的核心,描述了数据在集群中是如何实际存储和管理的。

  • 节点

    • 是什么: 一个运行中的 Elasticsearch 实例。一台服务器上可以运行一个或多个节点。

    • 类型:

      • 主节点: 负责集群范围内的轻量级管理操作,如创建或删除索引、跟踪哪些节点是集群的一部分、决定分片分配到哪个节点。生产环境通常需要多个合格的主节点候选节点以确保高可用。

      • 数据节点: 存储数据,执行与数据相关的操作,如 CRUD、搜索和聚合。这是存储和计算的主力,需要大量的 CPU、内存和磁盘 I/O。

      • 协调节点: 处理所有客户端请求,将请求路由到正确的数据节点,并收集结果进行汇总。如果未指定节点角色,所有节点默认都是协调节点。在大集群中,可以设置专用的协调节点来分担负载。

      • 摄取节点: 专门用于执行预处理管道,在索引文档之前对数据进行转换和丰富。

  • 集群

    • 是什么: 由一个或多个节点组成的集合。它们共同持有你的全部数据,并提供跨所有节点的联合索引和搜索能力。

    • 特点: 每个集群有一个唯一的名称(默认是 elasticsearch),节点通过集群名来加入。

  • 分片

    • 是什么: Elasticsearch 将索引切分成多个部分,每个部分称为一个分片。这是 Elasticsearch 实现水平扩展和分布式处理的基石。

    • 主分片:

      • 每个文档都存储在一个主分片上。

      • 索引创建时,其主分片数量就固定了,后续无法修改(除非重建索引)。

      • 数据被均匀分布到所有主分片上。

    • 副本分片:

      • 每个主分片可以有零个或多个副本。

      • 它们是主分片的完整拷贝,提供:

        1. 高可用性:如果主分片所在节点宕机,其副本可以被提升为新的主分片。

        2. 提高吞吐量:搜索请求可以并行地在所有副本分片上执行,从而大幅提升搜索性能。

物理架构总结:
集群 (Cluster) > 节点 (Node) > 索引 (Index) > 分片 (Shard,包括主分片和副本分片)。一个索引的分片会分布在集群的多个数据节点上。


3. 数据架构(数据如何被存储和索引)

这是 Elasticsearch 实现快速搜索的底层核心技术,主要由 Apache Lucene 提供。

  • Lucene 索引

    • 关系: 一个 Elasticsearch 分片 就是一个完整的 Lucene 索引。

    • 组成: Lucene 索引由一系列不可变的 段 组成。

    • 是什么: Lucene 索引的核心组成部分,是倒排索引的最小单元。

    • 特点:

      • 不可变: 一旦创建,就无法修改。这带来了缓存友好、锁开销低等优点。

      • 后台合并: 当段数量过多时,Lucene 会在后台将它们合并成更大的段,并清理已删除的文档。这个过程称为段合并。

  • 倒排索引

    • 是什么: Elasticsearch 能够实现毫秒级全文搜索的核心数据结构。

    • 原理: 它通过“词项”来反向关联到包含它的文档。

      • 传统正排索引: 文档ID -> 文档内容 (通过ID找内容)

      • 倒排索引: 词项 -> [文档ID1, 文档ID2, ...] (通过内容找ID)

    • 示例:

      • 文档1: "I love Elasticsearch"

      • 文档2: "I love coding"

      • 倒排索引列表:

        • i: [1, 2]

        • love: [1, 2]

        • elasticsearch: [1]

        • coding: [2]

    • 当搜索 "love coding" 时,系统会分别找到 love 和 coding 对应的文档ID列表,然后进行交集运算,最终返回文档2。


4.安装elasticsearch

  • 首先需要下载Elasticsearch 8.11.1的安装包
  • sudo tar -xzf elasticsearch-8.11.1-linux-x86_64.tar.gz -C /usr/local/elasticsearch/
  • 下载成功,现在解压安装包。
  • sudo tar -xzf elasticsearch-8.11.1-linux-x86_64.tar.gz -C /usr/local/elasticsearch/
  • Elasticsearch已成功解压。接下来需要创建一个专用用户来运行Elasticsearch,因为不建议使用root用户直接运行。
  • sudo adduser --system --no-create-home --disabled-login --group elasticsearch
  • elasticsearch系统用户已创建成功。现在需要设置Elasticsearch安装目录的所有权,将其更改为elasticsearch用户和组。
  • sudo chown -R elasticsearch:elasticsearch /usr/local/elasticsearch/elasticsearch-8.11.1
  • 权限设置成功,现在创建systemd服务文件,需要使用sudo权限创建systemd服务文件。
  • sudo bash -c 'cat > /etc/systemd/system/elasticsearch.service << EOF[Unit]Description=ElasticsearchDocumentation=https://www.elastic.coWants=network-online.targetAfter=network-online.target[Service]Type=notifyUser=elasticsearchGroup=elasticsearchEnvironment=ES_HOME=/usr/local/elasticsearch/elasticsearch-8.11.1Environment=ES_PATH_CONF=/usr/local/elasticsearch/elasticsearch-8.11.1/configEnvironment=PID_DIR=/var/run/elasticsearchEnvironment=ES_SD_NOTIFY=trueEnvironment=JAVA_HOME=/usr/local/elasticsearch/elasticsearch-8.11.1/jdkWorkingDirectory=/usr/local/elasticsearch/elasticsearch-8.11.1ExecStart=/usr/local/elasticsearch/elasticsearch-8.11.1/bin/elasticsearchRestart=alwaysRestartSec=10LimitNOFILE=65535LimitNPROC=4096LimitAS=infinityLimitFSIZE=infinity[Install]WantedBy=multi-user.targetEOF'
  • 服务文件创建成功,由于无法使用systemctl命令,我将直接以elasticsearch用户启动Elasticsearch。
  • sudo mkdir -p /var/run/elasticsearch && sudo chown elasticsearch:elasticsearch /var/run/elasticsearch && sudo -u elasticsearch /usr/local/elasticsearch/elasticsearch-8.11.1/bin/elasticsearch -d 
  • Elasticsearch已成功启动,现在检查进程状态并获取初始密码信息。
  • ps aux | grep elasticsearch && echo "===初始密码信息===" && sudo -u elasticsearch grep -A 5 'password' /usr/local/elasticsearch/elasticsearch-8.11.1/config/elasticsearch.yml || echo "初始密码可能已输出到控制台日志中" 
  • Elasticsearch 8.11.1已成功安装并启动完成。

    已执行的操作:

    下载了Elasticsearch 8.11.1的安装包
    将安装包解压到/usr/local/elasticsearch目录
    设置了elasticsearch用户对安装目录的权限
    创建了systemd服务文件用于管理服务
    成功以elasticsearch用户启动了服务

5.安装kibana

如果说 Elasticsearch 是一个强大的分布式搜索引擎和数据库,存储着海量的原始数据,那么 Kibana 就是专门为这个数据库量身打造的“可视化窗口”和“智能控制面板”。

您无法直接与 Elasticsearch 这个“数据库引擎”进行轻松的对话,但通过 Kibana 这个友好的图形化界面,您可以轻松地查询、探索、分析和展示存储在 Elasticsearch 中的数据。

sudo wget https://artifacts.elastic.co/downloads/kibana/kibana-8.11.1-linux-x86_64.tar.gz -O /usr/local/kibana/kibana-8.11.1-linux-x86_64.tar.gz 

解压安装包

sudo tar -xzf kibana-8.11.1-linux-x86_64.tar.gz -C /usr/local/kibana/ 

创建kibana用户进行配置

cd /usr/local/elasticsearch/elasticsearch-8.11.1/bin 
sudo ./elasticsearch-users useradd kibana_system -p kibana_system -r kibana_system

现在修改Kibana配置文件,设置连接到Elasticsearch的信息,并启动程序

sudo bash -c "cat > /usr/local/kibana/kibana-8.11.1/config/kibana.yml << 'EOF'
server.port: 5601
server.host: '0.0.0.0'
elasticsearch.hosts: ['https://localhost:9200']
elasticsearch.username: 'kibana_system'
elasticsearch.password: 'kibana_system'
elasticsearch.ssl.verificationMode: 'none'
server.name: 'kibana'
EOF" && echo "配置已更新" && sudo pkill -f kibana && echo "已停止旧进程" && sudo /usr/local/kibana/kibana-8.11.1/bin/kibana --allow-root > /usr/local/kibana/kibana-8.11.1/logs/kibana.log 2>&1 & 

- 日志显示"Kibana is now available",表示服务已正常运行
- 可以通过 http://ip:5601 访问Kibana界面

文件/usr/local/kibana/kibana-8.11.1/config/kibana.yml中添加配置

server.port: 5601
server.host: '0.0.0.0'
elasticsearch.hosts: ['https://localhost:9200']
elasticsearch.username: 'kibana_system'
elasticsearch.password: 'kibana_system'
elasticsearch.ssl.verificationMode: 'none'
server.name: 'kibana'
i18n.locale: zh-CN

 

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

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

相关文章

2025 试验机厂家最新推荐权威榜单:弹簧 / 环境 / 材料检测设备领军企业深度解析

在制造业高质量发展与 “材料强则装备强” 的战略背景下,试验机作为质量管控核心装备,其技术先进性直接影响产业升级进程。然而当前市场存在显著痛点:部分企业技术储备不足,难以突破高精度、智能化检测瓶颈,且产品…

[note] slope trick

slope trick 是一个优化二维 DP 的技巧。该二维 DP 需要满足以下条件:第二维是连续的;若 DP 的第一维固定时,第二维可以看作一个分段一次函数;这个函数每一段的斜率为整数;这个函数是凸函数(每一段的斜率是单调的…

three自带的框选工具SelectionBox、SelectionHelper

🧱 一、SelectionBox 是什么? SelectionBox 是 Three.js 示例库中的一个工具类(examples/jsm/interactive/SelectionBox.js),用于通过定义一个**三维空间包围盒(Box3)**来选中视野内的物体。 换句话说:它根据…

2025年精密磨床/CNC机械加工厂家推荐榜单:涵盖铣床/车床/磨削/多轴/复合加工,铝/不锈钢/钛合金/模具钢/塑料件定制,汽车/医疗/航空航天/机器人零件及模具工装夹具加工

2025年精密磨床/CNC机械加工厂家推荐榜单:专业采购决策指南行业背景与发展趋势随着制造业向高质量、精密化方向转型升级,精密磨床与CNC机械加工行业正迎来前所未有的发展机遇。在工业4.0和智能制造的大背景下,精密加…

2025 电动缸源头厂家最新推荐榜:剖析国产厂商成本优势与技术实力,附权威选购指南

在工业 4.0 深化推进的背景下,电动缸作为自动化生产的核心动力部件,需求持续攀升,但市场乱象却让采购决策陷入困境。部分厂家依赖外购核心部件导致兼容性差、故障率高,甚至通过减配原材料缩短产品寿命,而近年新兴…

Claude Haiku 4.5新功能、模型与定价,免费试用国内直连教程

Claude Haiku 4.5新功能、模型与定价,免费试用国内直连教程Claude 4.5 的新功能了解 Claude 4.5 中引入的新功能和改进,包括 Sonnet 4.5 和 Haiku 4.5 模型。Claude 4.5 引入了两个针对不同用例设计的模型:Claude S…

网络编程实践笔记_4_阿贝云_免费云服务器_简易博客_

简易博客 AI搜索 python后台有了简单方便的服务器,(在我的理解下还是个电脑主机,只不过连着网,实际就像个内网的AGV小车,可以ssh到他而已), ssh远程控制和scp远程传输文件之后,就可以准备代码了, 没做过网页编…

10 17

4.4终于把这道题调出来了啊/ll,不容易啊/ll 首先我写错的最大的点是 \(sum_x\) 把它也异或了 \(siz_x\) 次 其次是 op = 1 的 soltwo 的时候没有判 \(x = y\) 的情况 然后是 \(soltwo(x,y)\) \(x\) 往上的时候没有让…

深入解析:日语学习-日语知识点小记-进阶-JLPT-N1阶段应用练习(2):语法 +考え方15+2022年7月N1

深入解析:日语学习-日语知识点小记-进阶-JLPT-N1阶段应用练习(2):语法 +考え方15+2022年7月N12025-10-17 10:35 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: norma…

2025年铝单板厂家推荐排行榜,氟碳铝单板,木纹铝单板,冲孔铝单板,外墙铝单板,雕花铝单板,异形铝单板,双曲铝单板公司推荐!

2025年铝单板厂家推荐排行榜,氟碳铝单板,木纹铝单板,冲孔铝单板,外墙铝单板,雕花铝单板,异形铝单板,双曲铝单板公司推荐!行业背景与发展趋势铝单板作为现代建筑装饰材料的重要组成部分,近年来在建筑外立面、室…

2025 年最新推荐热熔胶源头厂家榜:覆盖书刊装订 / 包装等场景,助企业选高性价比产品

当前热熔胶应用广泛,却面临产品质量参差不齐、技术适配性不足、服务响应滞后等问题,下游企业在选购时常陷入困境,难以找到契合自身需求的高性价比源头厂家。为解决这一难题,帮助印刷、包装、鞋材等行业企业精准筛选…

开发日志

一个常用的工具:Mapster 进行一些对象属性复制的时候很方便。跟基础库里的DeepCopy配置起来使用。 配置文件的保存:目前基本上还是使用XML为主。 尝试了HASH,JSON,YAML,最终还是感觉XML使用总体体量更好。 XML,可…

Gitee 2025:中国开发者生态的崛起与本土化优势

Gitee 2025:中国开发者生态的崛起与本土化优势 在全球化与本土化交织的软件开发时代,中国开发者正面临一个关键选择:是继续依赖国际化的GitHub,还是拥抱更符合本土需求的Gitee?2025年的今天,这个答案已经变得清晰…

C++中的new操作符:new operator、operator new、placement new

new操作符(new operator) 当你写这种代码时: string *ps = new string("Memory Management"); 你使用的new是new操作符。 new操作符的动作包含两部分:在堆上为创建的对象申请内存 调用对象的构造函数进行…

JavaBean知识总结及范例

一、什么是 JavaBean? JavaBean 本质上是一个符合特定编码约定的 Java 类。它不是一个框架或技术,而是一种标准/规范。遵循这个规范的类,可以被特定的工具(如 IDE、Spring 框架等)更便捷地发现、使用和操作。二、…

C++20 协程的简单示例

C++20 协程的简单示例以下使用编译器版本为:gcc version 11.4.0 c++20 懒得介绍协程是什么,先直接贴一个最简单的例子:1 #include <iostream>2 #include <coroutine>3 #include <stdexcept>4 #in…

HMAC-SHA256 请求签名与验签实践(Python 可直接复用)

HMAC-SHA256 请求签名与验签实践(Python 可直接复用)目标:沉淀一套“能复制即用”的签名/验签规范与代码,解决接口防篡改与防伪造。 关键规则:待签名串:METHOD + "\n" + Content-MD5 + "\n"…

2025 年家装管道生产厂家最新推荐排行榜:覆盖云南昆明贵州贵阳四川成都重庆,精选优质 PPR/PVC 管道品牌,解决选购难题

在家装过程中,管道作为水电系统的核心部件,其质量直接决定居住安全与生活舒适度。当前家装管道市场混乱,部分厂商偷工减料,导致管道抗压差、易老化、密封性不足,漏水渗水问题频发,给业主带来巨大财产损失与生活困…

同一设备多账号登录,如何避免消息推送“串门”?

对各应用厂商而言,推送通知消息是App提高用户活跃度和转化率的高性价比营销工具。然而,当一个用户设备登录多个账号时,开发者可能会遇到同一条消息在同一设备的不同账号上重复展示的问题,这不仅降低了消息推送的精…

强合规行业DevOps选型:告别工具拼凑,找到真正适配的国产化DevOps方案

强合规行业DevOps平台选型需“建体系”,传统开源工具组合易陷数据割裂、合规难达标困境。本文对比三款DevOps产品,其中国产DevOps平台契合信创DevOps需求,内置合规卡点与追溯能力,适配国产化环境,助力企业平衡合规…