Bootstrap

ElasticSearch 认识和安装ES

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