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

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

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

相关文章

node.js中实现token的生成与验证

Token(令牌)是一种用于在客户端和服务器之间安全传输信息的加密字符串。在Web开发中,Token常用于身份验证和授权,确保用户能够安全地访问受保护的资源。 作用与意义 身份验证:Token可以用来验证用户的身份&#xff0…

第34天:安全开发-JavaEE应用反射机制攻击链类对象成员变量方法构造方法

时间轴: Java反射相关类图解: 反射: 1、什么是 Java 反射 参考: https://xz.aliyun.com/t/9117 Java 提供了一套反射 API ,该 API 由 Class 类与 java.lang.reflect 类库组成。 该类库包含了 Field 、 Me…

Django后端相应类设计

通用的ApiResponse类:用于生成统一的 API 响应格式。每个响应都包含以下字段(每个接口最终的返回数据格式): status_code:HTTP 状态码(如 200、400、500 等)message:响应的描述信息…

汽车基础软件AutoSAR自学攻略(三)-AutoSAR CP分层架构(2)

汽车基础软件AutoSAR自学攻略(三)-AutoSAR CP分层架构(2) 下面我们继续来介绍AutoSAR CP分层架构,下面的文字和图来自AutoSAR官网目前最新的标准R24-11的分层架构手册。该手册详细讲解了AutoSAR分层架构的设计,下面让我们来一起学习一下。 Introductio…

css面试常考布局(圣杯布局、双飞翼布局、三栏布局、两栏布局、三角形)

两栏布局 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head> &…

模糊查询在sqlserver、dm8、mysql的编写示例

模糊查询要求&#xff1a;字段值以 25D 开头&#xff0c;并以 4 位数字结尾 sqlserver&#xff1a; select * from table_name where column_name like 25D[0-9][0-9][0-9][0-9] 说明&#xff1a; 25D&#xff1a;表示字符串以 25D 开头。 [0-9][0-9][0-9][0-9]&#xf…

SCTNet模型详解及代码复现

模型背景 随着深度学习技术的发展,语义分割领域取得了显著进展。然而,在实际应用中,特别是在实时场景下,现有模型往往面临计算复杂度高、难以平衡精度和速度等问题。为应对这些挑战,研究人员提出了SCTNet模型,旨在解决实时语义分割问题,同时兼顾精度和效率。该模型融合…

Python的循环

Python的循环 Python的循环有两种&#xff0c;分别是for…in循环和while循环。 for…in 循环 假设我们要循环输出一个列表里的元素&#xff1a; names [张三,李四,王五] for name in names:print(name)执行这段代码后&#xff0c;会依次打印names的每一个元素&#xff1a;…

【0387】Postgres内核 streaming replication(流复制)工作原理

1. Postgres 流复制 本文是关于设置 PostgreSQL 版本流复制的简明指南,力求尽可能不受平台限制。故而,其假定您拥有运用操作系统工具编辑文件及安装/配置软件包的扎实知识。并且,还假定您熟悉 PostgreSQL 的配置情况。 PostgreSQL 内置的流复制为您的数据库构建了一个服务…

网络攻击行为可视化分析系统【数据分析 + 可视化】

一、系统背景 随着信息技术的快速发展&#xff0c;网络已成为现代社会不可或缺的一部分。然而&#xff0c;与此同时&#xff0c;网络攻击手段也日益多样化和复杂化&#xff0c;给企业和个人的信息安全带来了极大的威胁。传统的网络攻击分析方法往往依赖于人工分析和处理大量的…

利用obs studio制作(人像+屏幕)录制影像

1.什么是obs? OBS&#xff08;Open Broadcaster Software&#xff09;是一款功能强大的开源软件&#xff0c;它使用户能够直接从电脑录制视频和直播内容到 Twitch&#xff0c;YouTube 和 Facebook Live 等平台。它在需要直播或录制屏幕活动的游戏玩家、YouTube 用户和专业人士…

蠕虫病毒会给服务器造成哪些危害?

蠕虫病毒是一种独立的恶意计算机程序&#xff0c;可以进行自我复制来传播到其他的计算机系统当中&#xff0c;蠕虫病毒和传统病毒之间是有着区别的&#xff0c;蠕虫病毒不需要宿主程序就能够自行传播&#xff0c;主要是利用各种操作系统漏洞进行攻击的。 接下来小编就介绍一下蠕…

C# GDI+的DrawString无法绘制Tab键的现象

【啰嗦2句】 现在用C#的人很少了吧&#xff1f;GDI更少了吧&#xff1f;所以这个问题估计也冷门。没关系&#xff0c;分享给特定需要的人也不错。 【问题现象】 工作中开发了一个报告编辑器&#xff0c;实现图文排版等功能&#xff0c;用着没什么问题&#xff0c;直到有一天…

互斥信号量的等待与通知

目录 等待互斥信号量 信号量未被占用 信号量被自己占用 信号量被高优先级任务占用 信号量被低优先级任务占用 释放互斥信号量 未发生优先级继承 发生优先级继承 等待互斥信号量 信号量未被占用 标记为已经被占用锁定计数1 信号量被自己占用 锁定计数1 信号量被高优先级任务占用…

夯实前端基础之HTML篇

知识点概览 HTML部分 1. DOM和BOM有什么区别&#xff1f; DOM&#xff08;Document Object Model&#xff09; 当网页被加载时&#xff0c;浏览器会创建页面的对象文档模型&#xff0c;HTML DOM 模型被结构化为对象树 用途&#xff1a; 主要用于网页内容的动态修改和交互&…

Qt资源文件以及文件加密

1、Qt资源文件 在Qt中&#xff0c;资源文件&#xff08;.qrc&#xff09;是一种方便的方式来管理应用程序中的多媒体文件&#xff0c;如图像、图标和其他资源。这些文件使用XML格式定义&#xff0c;并在编译时嵌入到应用程序的二进制文件中。 创建资源文件的步骤如下&#xff…

深入详解人工智能自然语言处理(NLP)之文本处理:分词、词性标注、命名实体识别

【自然语言处理】——深入详解人工智能自然语言处理&#xff08;NLP&#xff09;之文本处理&#xff1a;分词、词性标注、命名实体识别 自然语言处理&#xff08;Natural Language Processing&#xff0c;简称NLP&#xff09;是人工智能的一个重要分支&#xff0c;涉及如何使计…

SD ComfyUI工作流 老照片修复上色

文章目录 老照片修复上色SD模型Node节点工作流程开发与应用效果展示老照片修复上色 该工作流专门设计用于老照片的修复和上色,通过一系列高级的图像处理技术,包括深度图预处理、面部修复、上色和图像放大等步骤,来恢复老照片的质量并增加色彩。首先,工作流加载老照片并进行…

后端技术选型 sa-token校验学习 下 结合项目学习 前后端登录

目录 后端设置 Controller 层 Service 层 后端返回 Token 给前端 1. 用户提交登录请求 2. 后端验证用户身份 3. 返回 Token 4. 前端保存 Token 前端存储 1. 前端向后端发起请求 2. 前端存储一下 Token 3.管理用户认证的 token 的 工具 4. 在 Service 层进行设置 H…

dtdug汇编指令练习

r 通用寄存器 m 代表内存 imm 代表立即数 r8 代表8位通用寄存器 m8 代表8位内存 imm8 代表8位立即数 mov指令练习 MOV 的语法: mov 目标操作数&#xff0c;源操作数 作用:拷贝源操作数到目标操作数 1、源操作数可以是立即数、通用寄存器、段寄存器、或者内存单元. 2、目标操作数…