文章目录
- 一、为什么学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:用于数据可视化展示。
- ELK 代表 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 组合被广泛用于日志管理和实时监控,帮助开发者有效地处理大规模的日志数据。