ElasticSearch 认识和安装ES

文章目录

  • 一、为什么学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 组合被广泛用于日志管理和实时监控,帮助开发者有效地处理大规模的日志数据。

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

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

相关文章

如何用 ESP32-CAM 做一个实时视频流服务器

文章目录 ESP32-CAM 概述ESP32-S 处理器内存Camera 模块MicroSD 卡槽天线板载 LED 和闪光灯其他数据手册和原理图ESP32-CAM 功耗 ESP32-CAM 引脚参考引脚排列GPIO 引脚哪些 GPIO 可以安全使用?GPIO 0 引脚MicroSD 卡引脚 ESP32-CAM 的烧录方式使用 ESP32-CAM-MB 编程…

UE5中制作地形材质

在创作大场景内容时,地形的设计和优化是至关重要的一步。利用UE中的地形系统,开发者能够高效地创建复杂的地形形态,同时保持游戏的性能和视觉效果。 1.在创建地形之前,先新建一个地形使用的混合材质球,添加节点Landsc…

通过 route 或 ip route 管理Linux主机路由

目录 一:route 使用说明1、查看路由信息2、删除指定路由3、增加指定路由 二:ip route 使用说明1、查看主机路由2、新增主机路由3、删除主机路由 通过route 或者ip route修改Linux主机路由后属于临时生效,系统重启后就恢复默认值了&#xff0c…

数据结构C语言描述11(图文结合)--二叉搜索树(BST树)的实现(数据采用KV存储形式进行封装)

前言 这个专栏将会用纯C实现常用的数据结构和简单的算法;有C基础即可跟着学习,代码均可运行;准备考研的也可跟着写,个人感觉,如果时间充裕,手写一遍比看书、刷题管用很多,这也是本人采用纯C语言…

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

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

【数据库系统概论】第6章 (二)范式(重点讲在函数依赖范畴内)

目录 第一范式(1NF) 第二范式(2NF) 第三范式(3NF) BC范式(BCNF) 多值依赖 第四范式(4NF) 范式(Normalization) 是一种结构化的设…

Supermaven 加入 Cursor:AI 编码新篇章

引言 2024 年 11 月 11 日,我们迎来了一个激动人心的时刻——Supermaven 正式加入 Cursor! 这一合作标志着 AI 编程工具进入了一个新的发展阶段,为开发者提供更智能、更高效的编码体验。本文将带您了解此次合并的背景、意义以及未来的发展方…

通信与网络安全管理之ISO七层模型与TCP/IP模型

一.ISO参考模型 OSI七层模型一般指开放系统互连参考模型 (Open System Interconnect 简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系统提供了一种功能结构的框架。 它从低到高分别是…

【灵码助力安全3】——利用通义灵码辅助智能合约漏洞检测的尝试

前言 随着区块链技术的快速发展,智能合约作为去中心化应用(DApps)的核心组件,其重要性日益凸显。然而,智能合约的安全问题一直是制约区块链技术广泛应用的关键因素之一。由于智能合约代码一旦部署就难以更改&#xf…

网络安全设备主要有什么

网络安全设备指的肯定是硬件设备了,国内卖安全硬件的没几家,天融信,启明星辰,绿盟,深信服,就这四家卖的比较齐全吧,上它们官网看一下,就知道市面上主要的网络安全设备有哪些了。分类…

Springboot3.4整合jsp

文章目录 环境 springboot3.4 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency> <!--用于编译jsp--> <!-- Tomcat Embed Jasper --> <dependency>…

软件自动定时启动器

点击添加软件&#xff0c;可以添加可执行文件软件&#xff0c;设置启动的时间&#xff0c;也可以设置关闭的时间 注意&#xff0c;时间为00&#xff1a;00&#xff1a;00 等于没设置&#xff0c;这个时间不在设置范围&#xff0c;其他任何时间都可以 1.1更新 1&#xff1a;修复…

[java基础-集合篇]LinkedList源码粗析

LinkedList 的数据结构 实现List、Deque 接口&#xff0c;基于 双向链表实现的列表。与基于数组的 ArrayList 不同&#xff0c;基于链表的LinkedList 允许在列表的任何位置快速地插入和删除元素。 Java中LinkedList实现了Deque&#xff0c;它提供了 add, offer, remove, poll, …

error: linker `link.exe` not found

开始学习rust&#xff0c;安装好rust的环境&#xff0c;开始从hello world开始&#xff0c;结果用在win10环境下&#xff0c;使用vs code或cmd窗口编译rust报错&#xff1a; PS E:\study_codes\rust-demo\chart01> rustc hello.rs error: linker link.exe not found| note:…

STM32使用ITM调试_通过仿真器实现串口打印

IDE&#xff1a;CLion MCU: STM32F407VET6 工具&#xff1a;OpenOCD Telnet 一、简介 调试单片机时&#xff0c;如果要打印数据往往需要另接一根线通过USB转TTL接到电脑上。但这样做往往并不方便&#xff0c;尤其是身边没有USB转TTL工具时。这时可以使用单片机自带的ITM单元…

网络基础1 http1.0 1.1 http/2的演进史

http1.0 1.1 http/2的演进史&#x1f60e; &#xff08;连接复用 队头阻塞 服务器推送 2进制分帧&#xff09; 概述 我们主要关注的是应用层 传输层 http协议发展历史 http的报文结构&#xff1a;起始行 Header Body http的典型特征 http存在的典型问题 Keep Alive机制 chun…

汽车牌照识别系统的设计与仿真(论文+源码)

1设计原理 车牌识别系统的设计是一项利用车辆的动态视频或者静态图像实现牌照区域定位车牌号码识别的技术。其硬件部分通常包括触发设备、拍摄设备、照明设备、图像收集设备、进行车牌号码识别的处理器等&#xff0c;其软件的关键部分包含车牌区域定位的算法、车牌字符的分割算…

springboot 集成 mybatisplus

本案例版本 springboot 3.1.12 mybatis-plus 3.5.9 源码地址 stormlong/springboot-mybatisplus 集成 mybatis-plus 官方文档&#xff1a;快速开始 | MyBatis-Plus 引入依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-…

本地服务器Docker搭建个人云音乐平台Splayer并实现远程访问告别烦人广告

前言 大家好&#xff01;今天我要给大家分享的是如何在Ubuntu上用Docker快速搭建高颜值无广告的某抑云音乐播放器Splayer的详细流程&#xff0c;并且结合cpolar内网穿透工具实现远程访问。如果你是音乐爱好者&#xff0c;经常需要在外办公或旅行&#xff0c;这个教程绝对能让你…

phpenc加密程序源码

免费扩展加密程序&#xff0c;类似于sg11加密&#xff0c;支持单个PHP&#xff08;免费&#xff09;文件以及批量PHP文件&#xff08;ZIP压缩包格式&#xff09;源码加密的保护平台&#xff0c;加密后的源码文件保持原有代码结构&#xff0c;可以跨平台运行&#xff0c;可以运行…