ElasticSearch 认识和安装ES

news2025/1/11 13:32:56

文章目录

  • 一、为什么学ElasticSearch?
      • 1.ElasticSearch 简介
      • 2.ElasticSearch 与传统数据库的对比
      • 3.ElasticSearch 应用场景
      • 4.ElasticSearch 技术特点
      • 5.ElasticSearch 市场表现
      • 6.ElasticSearch 的发展
  • 二、认识和安装ES
      • 1.认识 Elasticsearch(简称 ES)
      • 2.ElasticSearch 与 ELK Stack
      • 3.安装 Elasticsearch(tar包)
      • 4.安装 Kibana
      • 5.使用 Kibana 进行操作
      • 6.安装过程中的注意事项
      • 7.总结

一、为什么学ElasticSearch?

1.ElasticSearch 简介

  • ElasticSearch 是一个分布式、高性能的搜索引擎,广泛应用于大数据检索、日志分析、实时搜索等场景。
  • 与传统数据库相比,ElasticSearch 对于大规模数据的处理具有显著优势,特别是模糊查询、分词分析、语义理解等复杂搜索任务。



2.ElasticSearch 与传统数据库的对比

  • 数据库查询问题:使用传统数据库做模糊查询时,随着数据量增大,响应时间会显著变慢,尤其是当数据量达到几十万、百万时,响应时间甚至可能达到上百毫秒。

  • ElasticSearch 优势:ElasticSearch 在进行类似商品搜索、代码库搜索、全文检索等任务时,响应时间较短,甚至在数据量达到千万级时仍然能够保持较快的搜索速度。ElasticSearch 的查询速度与数据量的关系较小,性能优秀。


3.ElasticSearch 应用场景

  • 电商商品搜索:例如黑马商城中的商品搜索,使用数据库进行模糊查询时,响应时间大约为 100 毫秒,但使用 ElasticSearch 后,响应时间大幅度降低至 20 毫秒左右,即便数据量增加,搜索速度依然保持较快。
  • 代码托管平台(如 GitHub):GitHub 中有数十亿行代码,ElasticSearch 支持快速高效地从大量数据中检索出相关内容,远超过传统数据库的查询能力。

  • 百度、谷歌搜索:搜索引擎能够根据用户输入的关键字匹配相似或相关内容,而不仅仅是精确匹配。通过分词和语义分析,ElasticSearch 能处理复杂的搜索需求。

  • 地理位置搜索:如打车软件通过用户的地理位置快速查找附近的车辆,ElasticSearch 提供了强大的地理坐标搜索功能,能够实时返回附近的车辆信息。


4.ElasticSearch 技术特点

  • 开源免费:ElasticSearch 是一个完全开源且免费的搜索引擎,用户可以在无需付费的情况下自由使用。
  • 分布式架构:支持分布式部署,具有高可用性,能够处理海量数据。
  • 高效能:即使在数据量极大的情况下,ElasticSearch 也能够保持较快的查询速度,尤其适用于大规模的全文检索、日志分析等场景。
  • 全文检索:ElasticSearch 支持强大的全文检索能力,能够进行模糊匹配、语义理解、分词分析等。


5.ElasticSearch 市场表现

  • 市场地位:ElasticSearch 连续多年稳居全球搜索引擎技术的排名第一,超越了传统的 Solar 等搜索引擎。其强大的性能和灵活的应用,使其成为大数据处理和实时搜索的首选工具。



6.ElasticSearch 的发展

  • 从 2016 年起,ElasticSearch 逐渐超越了 Solar,成为开源搜索引擎领域的领导者。随着开源软件社区的不断贡献,ElasticSearch 的功能和性能不断增强,保持了行业领先地位。

通过学习 ElasticSearch,能够帮助我们应对各种大数据搜索需求,特别是在电商、社交平台、代码托管、日志分析等多个行业中发挥重要作用。




二、认识和安装ES

1.认识 Elasticsearch(简称 ES)

1.1 Lucene:Elasticsearch 的底层技术是 Lucene,它是一个由 Apache 维护的基于 Java 的搜索引擎库,提供了创建搜索引擎的 API 工具包。

官方网址:https://lucene.apache.org

  • 优势:Lucene 提供了高性能的搜索引擎功能,并且易于扩展。
  • 倒排索引:Lucene 使用倒排索引技术,使得数据的搜索非常高效。

1.2 Elasticsearch(ES)

  • 起源:ES 是基于 Lucene 开发的,最初由 Shay Banon 于 2004 年创建,最初名为 Compass,后来重写并更名为 Elasticsearch。
  • 核心特性:ES 支持分布式架构,能够做水平扩展,支持集群部署,能够存储海量数据并高效搜索。
  • 开发语言:虽然 Lucene 是用 Java 写的,ES 也采用 Java 开发,但它通过 RESTful API 提供跨语言的访问接口,支持多种编程语言进行操作。
  • 当前版本:ES 最新版本为 8.x,但在国内的企业中,较为常用的是 6.x 和 7.x 版本,主要是因为 API 稳定性。
  • 官方网址:https://www.elastic.co/cn/




2.ElasticSearch 与 ELK Stack

  • ELK Stack
    • ELK 代表 Elasticsearch、Logstash 和 Kibana:
      • Elasticsearch:用于存储、计算和搜索数据。
      • Logstash:用于数据抓取和处理。
      • Kibana:用于数据可视化展示。



  • 使用场景
    • 日志数据分析


    • 实时监控

    • 大规模微服务的日志管理和监控




3.安装 Elasticsearch(tar包)

  • 安装方式:可以通过多种方式安装 Elasticsearch,这里采用 Docker 进行安装。
  • 没有tar包也可以直接拉取镜像,详细操作请观看下一篇笔记
  • 将 tar 包复制到虚拟机根目录下


  • 导入镜像
docker load -i es.tar
docker load -i kibana.tar



  • 查看镜像是否导入成功,导入成功建议删除 tar 包,内存占用大
docker images


  • 删除 tar 包
rm -rf *.tar
ll



Docker 安装命令

docker run -d \
  --name es \
  -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
  -e discovery.type=single-node \
  -v es-data:/usr/share/elasticsearch/data \
  -v es-plugins:/usr/share/elasticsearch/plugins \
  --privileged \
  --network hm-net \  # 这里是自己设置的网络
  -p 9200:9200 \
  -p 9300:9300 \
  elasticsearch:7.12.1

  • 环境变量配置ES_JAVA_OPTS 用于设置内存,discovery.type=single-node 用于单机模式启动。
  • 端口映射:9200 用于 HTTP 接口,9300 用于集群通信。


  • 查看容器运行情况
docker ps



  • 查看日志
docker logs -f es



  • 验证安装
    • 通过访问 http://虚拟机 IP 地址:9200 可以确认 Elasticsearch 是否成功启动。若返回 JSON 格式的响应信息,证明安装成功。




4.安装 Kibana

  • Kibana 安装命令
docker run -d \
  --name kibana \
  -e ELASTICSEARCH_HOSTS=http://es:9200 \
  --netwwork=hm-net \    # 这里是自己设置的网络
  -p 5601:5601 \
  kibana:7.12.1

  • 注意:es 和 kibana 需在一个网络里面,如果不在一个网络里面,按照以下步骤操作:
docker network create [网络名]
docker network connect [网络名] kibana
docker network connect [网络名] es

  • 配置说明ELASTICSEARCH_HOSTS 配置为 Elasticsearch 的地址,9200 为 ES 服务端口,5601 为 Kibana 提供的 Web 服务端口。

  • 查看日志:
docker logs -f kibana



  • 验证 Kibana 安装
    • 通过访问 http://虚拟机 ip 地址:5601 可以访问 Kibana 的图形化界面。




5.使用 Kibana 进行操作

  • 开发工具(Dev Tools):Kibana 提供了开发工具面板,允许用户直接向 Elasticsearch 发送 HTTP 请求进行数据增删改查等操作,而无需记住每个请求的具体路径和参数。

    • 例如,使用 GET / 请求可以查看 Elasticsearch 的基本信息。




  • 好处
    • 简化操作:无需手动构造复杂的请求路径和参数。
    • 代码提示:Kibana 提供了智能提示,帮助用户构建请求。



6.安装过程中的注意事项

  • Docker 镜像
    • 镜像大小较大,下载较慢,可以直接使用提供的镜像文件进行导入。
    • 支持 Windows 系统的 Docker 环境,Mac 系统(尤其是 M2 芯片)需要注意镜像兼容性问题。
  • 内存配置
    • Elasticsearch 默认使用 1GB 内存,建议根据电脑配置调整内存大小,避免占用过多资源。最低推荐内存为 512MB。




7.总结

  • 本章内容主要是介绍了 Elasticsearch 的基础知识、它的起源以及如何安装和配置 Elasticsearch 和 Kibana。
  • 安装过程中使用 Docker 是一种方便快捷的方式,可以轻松启动单机模式的 Elasticsearch 服务,并结合 Kibana 进行可视化操作。
  • 在企业生产环境中,ELK Stack 组合被广泛用于日志管理和实时监控,帮助开发者有效地处理大规模的日志数据。

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

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

相关文章

mysql和redis的最大连接数

平时我们要评估mysql和redis的最大连接数,可以选择好环境(比如4核8G),定好压测方法(没有索引的mysql单表,redis单key)进行压测,评估其最大并发量。 也可以查看各大云厂商的规格进行评估。 mys…

2025年中科院分区大类划分公布!新增8155本

2025年中科院分区表变更情况 扩大收录范围 2025年的期刊分区表在原有的自然科学(SCIE)、社会科学(SSCI)和人文科学(AHCI)的基础上,增加了ESCI期刊的收录,并根据这些期刊的数据进行…

机器人避障不再“智障”:HEIGHT——拥挤复杂环境下机器人导航的新架构

导读: 由于环境中静态障碍物和动态障碍物的约束,机器人在密集且交互复杂的人群中导航,往往面临碰撞与延迟等安全与效率问题。举个简单的例子,商城和车站中的送餐机器人往往在人流量较大时就会停在原地无法运作,因为它不…

Spring Boot教程之五十二:CrudRepository 和 JpaRepository 之间的区别

Spring Boot – CrudRepository 和 JpaRepository 之间的区别 Spring Boot建立在 Spring 之上,包含 Spring 的所有功能。由于其快速的生产就绪环境,使开发人员能够直接专注于逻辑,而不必费力配置和设置,因此如今它正成为开发人员…

加速物联网HMI革命,基于TouchGFX的高效GUI显示方案

TouchGFX 是一款针对 STM32 微控制器优化的先进免费图形软件框架。 TouchGFX 利用 STM32 图形功能和架构,通过创建令人惊叹的类似智能手机的图形用户界面,加速了物联网 HMI 革命。 TouchGFX 框架包括 TouchGFX Designer (TouchGFXDesigner)(…

Java-数据结构-栈与队列(StackQueue)

一、栈(Stack) ① 栈的概念 栈是一种特殊的线性表,它只允许固定一端进行"插入元素"和"删除元素"的操作,这固定的一端被称作"栈顶",对应的另一端就被称做"栈底"。 📚 栈中的元素遵循后…

案例研究:UML用例图中的结账系统

在软件工程和系统分析中,统一建模语言(UML)用例图是一种强有力的工具,用于描述系统与其用户之间的交互。本文将通过一个具体的案例研究,详细解释UML用例图的关键概念,并说明其在设计结账系统中的应用。 用…

【动态规划篇】欣赏概率论与镜像法融合下,别出心裁探索解答括号序列问题

本篇鸡汤:没有人能替你承受痛苦,也没有人能拿走你的坚强. 欢迎拜访:羑悻的小杀马特.-CSDN博客 本篇主题:带你解答洛谷的括号序列问题(绝对巧解) 制作日期:2025.01.10 隶属专栏:C/C题…

点击底部的 tabBar 属于 wx.switchTab 跳转方式,目标页面的 onLoad 不会触发(除非是第一次加载)

文章目录 1. tabBar 的跳转方式2. tabBar 跳转的特点3. 你的配置分析4. 生命周期触发情况5. 总结 很多人不明白什么是第一次加载,两种情况讨论,第一种情况假设我是开发者,第一次加载就是指点击微信开发者工具上边的编译按钮,每点击…

CUDA、CUDNN以及tensorRT的版本对应关系

各版本的对应除了可以看文件的命名上还可以查看TensorRT的Release日志: Release Notes :: NVIDIA Deep Learning TensorRT Documentation 这个是官方测试TensorRT的Release日志,里面指明了当前测试的TensorRT版本是在哪个CUDNN等库下的测试结果&#x…

设计模式(观察者模式)

设计模式(观察者模式) 第三章 设计模式之观察者模式 观察者模式介绍 观察者模式(Observer Design Pattern) 也被称为发布订阅模式 。模式定义:在对象之间定义一个一对多的依赖,当一个对象状态改变的时候…

Helm部署activemq

1.helm create activemq 创建helm文件目录 2.修改values.yaml 修改image和port 3. helm template activemq 渲染并输出 4. helm install activemq activemq/ -n chemical-park // 安装 5.启动成功

Untiy中如何嵌入前端页面,从而播放推流视频?

最近工作中频繁用到unity,虽然楼主之前也搞过一些UNTY游戏开发项目,但对于视频这块还是不太了解,所以我们采用的方案是在Unity里寻找一个插件来播放推流视频。经过我的一番寻找,发现了这款Vuplex 3D WebView,它可以完美的打通Unit…

rabbitmq的三个交换机及简单使用

提前说一下,创建队列,交换机,绑定交换机和队列都是在生产者。消费者只负责监听就行了,不用配其他的。 完成这个场景需要两个服务哦。 1直连交换机-生产者的代码。 在配置类中创建队列,交换机,绑定交换机…

Excel 技巧07 - 如何计算到两个日期之间的工作日数?(★)如何排除节假日计算两个日期之间的工作日数?

本文讲了如何在Excel中计算两个日期之间的工作日数,以及如何排除节假日计算两个日期之间的工作日数。 1,如何计算到两个日期之间的工作日数? 其实就是利用 NETWORKDAYS.INTL 函数 - weekend: 1 - 星期六,星期日 2,如…

初学stm32 --- DAC模数转换器工作原理

目录 什么是DAC? DAC的特性参数 STM32各系列DAC的主要特性 DAC框图简介(F1/F4/F7) 参考电压/模拟部分电压 触发源 关闭触发时(TEN0)的转换时序图 DMA请求 DAC输出电压 什么是DAC? DAC,全称:Digital…

从预训练的BERT中提取Embedding

文章目录 背景前置准备思路利用Transformer 库实现 背景 假设要执行一项情感分析任务,样本数据如下 可以看到几个句子及其对应的标签,其中1表示正面情绪,0表示负面情绪。我们可以利用给定的数据集训练一个分类器,对句子所表达的…

从CentOS到龙蜥:企业级Linux迁移实践记录(系统安装)

引言: 随着CentOS项目宣布停止维护CentOS 8并转向CentOS Stream,许多企业和组织面临着寻找可靠替代方案的挑战。在这个背景下,龙蜥操作系统(OpenAnolis)作为一个稳定、高性能且完全兼容的企业级Linux发行版&#xff0…

车联网安全--TLS握手过程详解

目录 1. TLS协议概述 2. 为什么要握手 2.1 Hello 2.2 协商 2.3 同意 3.总共握了几次手? 1. TLS协议概述 车内各ECU间基于CAN的安全通讯--SecOC,想必现目前多数通信工程师们都已经搞的差不多了(不要再问FvM了);…

iOS实际开发中使用Alamofire实现多文件上传(以个人相册为例)

引言 在移动应用中,图片上传是一个常见的功能,尤其是在个人中心或社交平台场景中,用户经常需要上传图片到服务器,用以展示个人风采或记录美好瞬间。然而,实现多图片上传的过程中,如何设计高效的上传逻辑并…