从0到1上手Elasticsearch,开启高效搜索之旅

目录

一、Elasticsearch 初相识

二、安装与环境搭建

(一)安装前准备

(二)下载 Elasticsearch

(三)安装步骤详解

(四)启动与验证

三、核心概念大揭秘

(一)索引(Index)

(二)类型(Type)

(三)文档(Document)

(四)字段(Field)

(五)映射(Mapping)

四、基本操作实战

(一)索引库操作

1. 创建索引库

2. 查询索引库

3. 修改索引库

4. 删除索引库

(二)文档操作

1. 新增文档

2. 查询文档

3. 删除文档

4. 修改文档

五、深入探索高级特性

(一)搜索功能进阶

(二)聚合分析

(三)集群与分布式

六、Java 与 Elasticsearch 的交互

(一)Java Rest Client 介绍

(二)初始化 RestClient

(三)常见操作代码实现

1. 创建索引库

2. 删除索引库

3. 判断索引库是否存在

4. 新增文档

5. 修改文档

七、学习资源推荐

八、总结与展望


一、Elasticsearch 初相识

在当今这个数据爆炸的时代,我们每天都会产生海量的数据。无论是社交媒体上的动态、电商网站的商品评价,还是科学研究中的实验数据,这些信息都蕴含着巨大的价值。然而,如何快速有效地从如此庞大的数据海洋中找到我们需要的信息,成为了一个挑战。这时,Elasticsearch 就派上了用场。

Elasticsearch 是一个基于 Lucene 的开源分布式搜索和分析引擎,它提供了分布式搜索、实时分析、分布式存储以及强大的查询引擎等功能。简单来说,它就像是一个超级智能的图书馆管理员,无论你要找的是哪本书,哪怕图书馆里藏书千万,它都能在瞬间帮你找到。

Elasticsearch 在众多领域都有着广泛的应用,比如:

  • 电商领域:在电商平台中,Elasticsearch 用于商品搜索。想象一下,当你在淘宝、京东等电商平台上搜索商品时,输入关键词后,瞬间就能看到大量相关商品。这背后就是 Elasticsearch 在发挥作用,它能够对海量的商品数据进行快速索引和搜索,精准地找到与你搜索关键词匹配的商品,还能根据各种条件进行排序,如销量、价格等 ,大大提升了用户购物的效率和体验。例如,一家大型在线零售商在引入 Elasticsearch 之前,顾客常常因为搜索结果不准确而找不到心仪的商品,导致销售机会流失。引入 Elasticsearch 后,实现了更加智能的商品推荐和精准搜索,大大提高了用户体验和客户满意度,最终增加了销售额。
  • 日志管理:对于互联网公司来说,服务器每天都会产生海量的日志数据,记录着用户的各种操作、系统的运行状态等信息。通过 Elasticsearch,能够快速地对这些日志进行检索和分析。比如,当系统出现故障时,可以通过 Elasticsearch 迅速定位到故障发生前后的相关日志,帮助技术人员快速排查问题;还可以对用户行为日志进行分析,了解用户的使用习惯和偏好,为产品优化提供数据支持。一个跨国科技公司面临着日志数据管理的难题,随着业务的增长,他们的服务器生成的日志量急剧增加,传统的日志管理系统难以应对。他们采用了 Elasticsearch 构建了一套新的日志管理和监控系统,这套系统不仅能高效地存储和检索日志数据,还提供了实时的性能监控和异常报警功能,确保了系统的稳定运行。
  • 企业搜索:许多大型企业内部有大量的文档、文件、知识库等资料,员工在查找相关信息时,如果没有高效的搜索工具,就会浪费大量时间。Elasticsearch 可以搭建企业级搜索平台,实现对企业内部各种数据的统一搜索,提高员工的工作效率 。

正是由于 Elasticsearch 在数据处理和搜索方面的强大能力,越来越多的开发者和企业开始学习和使用它。如果你也想掌握这门强大的技术,那就跟着我一起开启 Elasticsearch 的学习之旅吧!

二、安装与环境搭建

在开始安装 Elasticsearch 之前,我们需要确保系统环境满足一定的条件,并且准备好相关的软件和工具。下面将详细介绍安装 Elasticsearch 的步骤。

(一)安装前准备

Elasticsearch 是基于 Java 开发的,所以在安装 Elasticsearch 之前,需要确保你的系统已经安装了 Java Development Kit(JDK),且版本要求为 1.8 及以上 。你可以通过以下命令检查系统是否已经安装了 JDK 以及 JDK 的版本:

 

java -version

如果系统提示 “java: command not found”,则说明你的系统尚未安装 JDK。你可以从 Oracle 官方网站(https://www.oracle.com/java/technologies/downloads/ )下载适合你操作系统的 JDK 安装包进行安装。以 Windows 系统为例,下载完成后,双击安装包,按照安装向导的提示进行操作即可。安装过程中,可以选择自定义安装路径,建议将 JDK 安装在一个路径简洁、没有中文和空格的目录下,比如 “C:\Program Files\Java\jdk1.8.0_361”。安装完成后,还需要配置环境变量。在 “系统属性” -> “高级” -> “环境变量” 中,新建一个系统变量 “JAVA_HOME”,变量值为 JDK 的安装路径;然后在 “Path” 变量中添加 “% JAVA_HOME%\bin” 和 “% JAVA_HOME%\jre\bin”,这样就可以在任意目录下使用 Java 命令了。

(二)下载 Elasticsearch

你可以从 Elasticsearch 官方网站(https://www.elastic.co/downloads/elasticsearch )下载 Elasticsearch 的安装包。在下载页面,你可以看到针对不同操作系统的下载选项,包括 Windows、Mac OSX、Linux 等。

  • Windows 系统:点击 “Windows” 下载链接,会下载一个 ZIP 格式的压缩包,如 “elasticsearch-8.16.2-windows-x86_64.zip”。
  • Mac OSX 系统:有两种下载方式,一是使用 Homebrew 包管理器进行安装,在终端中执行以下命令:
 

brew tap elastic/tap

brew install elastic/tap/elasticsearch-full

二是直接从官网下载,点击 “Mac OSX” 下载链接,下载 “elasticsearch-8.16.2-darwin-x86_64.tar.gz” 压缩包。

  • Linux 系统:同样有多种下载方式,以使用 RPM 包安装为例,对于 CentOS、Fedora 等系统,可以使用以下命令下载安装包:
 

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.16.2-x86_64.rpm

如果是 Debian、Ubuntu 等系统,则可以使用 DEB 包进行安装,下载命令如下:

 

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.16.2-amd64.deb

(三)安装步骤详解

下载完成后,我们就可以开始安装 Elasticsearch 了,不同操作系统的安装步骤略有不同。

  • Windows 系统:找到下载的 ZIP 压缩包,解压到你希望安装的目录,比如 “C:\elasticsearch-8.16.2”。解压完成后,进入解压后的目录,你会看到 bin、config、data、logs 等文件夹。接下来,需要对配置文件进行一些修改。进入 config 目录,用文本编辑器打开 elasticsearch.yml 文件。在这个文件中,你可以配置 Elasticsearch 的各种参数。例如,修改集群名称:
 

cluster.name: my-elasticsearch-cluster

修改节点名称:

 

node.name: node-1

配置数据和日志存储路径:

 

path.data: C:\elasticsearch-8.16.2\data

path.logs: C:\elasticsearch-8.16.2\logs

如果需要允许其他设备通过网络访问,还需要修改 network.host 配置项:

 

network.host: 0.0.0.0

  • Mac OSX 系统:如果是使用 Homebrew 安装的,安装完成后,Elasticsearch 会自动配置好相关的环境和参数,你可以直接跳过配置文件修改这一步。如果是下载的压缩包安装方式,解压下载的 tar.gz 压缩包,比如解压到 “/usr/local/elasticsearch-8.16.2” 目录。然后进入 config 目录,修改 elasticsearch.yml 文件,配置内容与 Windows 系统类似 。
  • Linux 系统:如果是使用 RPM 包安装,下载完成后,使用以下命令进行安装:
 

sudo rpm --install elasticsearch-8.16.2-x86_64.rpm

安装完成后,配置文件位于 “/etc/elasticsearch/elasticsearch.yml”,同样需要根据需求修改相关配置项。如果是使用 DEB 包安装,下载完成后,执行以下命令安装:

 

sudo dpkg -i elasticsearch-8.16.2-amd64.deb

安装后的配置文件路径和修改方式与 RPM 包安装类似。

  • Docker 安装方式:如果你熟悉 Docker,也可以使用 Docker 来安装 Elasticsearch,这种方式更加便捷,并且可以方便地进行环境隔离。首先,确保你已经安装了 Docker。然后,使用以下命令拉取 Elasticsearch 镜像:
 

docker pull elasticsearch:8.16.2

拉取完成后,使用以下命令创建并运行 Elasticsearch 容器:

 

docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:8.16.2

其中,-d 表示在后台运行容器;--name 指定容器的名称为 elasticsearch;-p 9200:9200 将容器的 9200 端口映射到主机的 9200 端口,这样我们就可以通过主机的 9200 端口访问 Elasticsearch;-p 9300:9300 将容器的 9300 端口映射到主机的 9300 端口,9300 端口主要用于集群节点之间的通信;-e "discovery.type=single-node" 设置 Elasticsearch 为单节点模式 。

(四)启动与验证

完成安装和配置后,就可以启动 Elasticsearch 了。

  • Windows 系统:进入 Elasticsearch 安装目录的 bin 文件夹,双击 elasticsearch.bat 文件即可启动 Elasticsearch。启动过程中,会在命令行窗口输出一些日志信息,如果看到 “started” 字样,说明 Elasticsearch 已经成功启动。
  • Mac OSX 系统:如果是使用 Homebrew 安装的,可以使用以下命令启动 Elasticsearch:
 

brew services start elastic/tap/elasticsearch-full

如果是压缩包安装的,进入安装目录的 bin 文件夹,执行以下命令启动:

 

./elasticsearch

  • Linux 系统:使用 systemd 管理的系统(如 CentOS 7+、Ubuntu 16.04+),可以使用以下命令启动 Elasticsearch:
 

sudo systemctl start elasticsearch

并使用以下命令设置开机自启:

 

sudo systemctl enable elasticsearch

对于其他系统,可以进入安装目录的 bin 文件夹,执行以下命令启动:

 

./elasticsearch

如果是 Docker 安装的,启动容器后,Elasticsearch 就已经在容器中运行了。

启动成功后,我们可以通过访问 Elasticsearch 的 RESTful API 来验证是否安装成功。打开浏览器,访问 “http://localhost:9200”(如果是 Docker 安装,且主机 IP 不是localhost,需要将localhost替换为实际的主机 IP)。如果看到类似以下的 JSON 响应,说明 Elasticsearch 已经成功安装并运行:

 

{

"name" : "node-1",

"cluster_name" : "my-elasticsearch-cluster",

"cluster_uuid" : "xxxxxxxxxxxxxxxxxxxx",

"version" : {

"number" : "8.16.2",

"build_flavor" : "default",

"build_type" : "zip",

"build_hash" : "xxxxxxxxxxxxxxxxxxxx",

"build_date" : "xxxx-xx-xxTxx:xx:xx.xxxxxxZ",

"build_snapshot" : false,

"lucene_version" : "9.12.0",

"minimum_wire_compatibility_version" : "7.17.0",

"minimum_index_compatibility_version" : "7.0.0"

},

"tagline" : "You Know, for Search"

}

其中,“name” 表示节点名称,“cluster_name” 表示集群名称,“version” 中包含了 Elasticsearch 的版本信息等 。

通过以上步骤,我们就完成了 Elasticsearch 的安装与环境搭建。接下来,就可以深入学习 Elasticsearch 的各种功能和使用方法了。

三、核心概念大揭秘

在深入学习 Elasticsearch 的使用之前,我们先来了解一下它的核心概念。这些概念是理解 Elasticsearch 工作原理和使用方法的基础,就像是学习一门语言时的语法和词汇一样重要。

(一)索引(Index)

索引在 Elasticsearch 中就像是数据库中的表,是存储和组织文档的地方 。我们可以把它想象成一个专门存放某种类型数据的仓库,比如一个电商平台中,可能会有一个名为 “products” 的索引,用来存放所有商品的信息;一个博客系统中,可能会有一个 “articles” 索引,用来存储所有文章的内容。每个索引都有一个唯一的名称,并且名称必须全部是小写字母 。在 Elasticsearch 中,我们对文档的索引(存储)、搜索、更新和删除等操作,都是通过索引名称来进行的。例如,我们要搜索 “products” 索引中的商品,就可以使用相关的 API 指定索引名称为 “products” 来执行搜索操作。一个集群中可以创建多个索引,以满足不同业务场景的数据存储和检索需求。

(二)类型(Type)

在早期版本的 Elasticsearch 中,类型(Type)是索引内文档的逻辑分类,它相当于数据库表中的不同数据类别。例如,在一个电商平台的 “products” 索引中,可能会有 “clothes”(服装)、“electronics”(电子产品)等不同的类型,用于区分不同类别的商品数据 。然而,从 Elasticsearch 6.x 版本开始,逐渐弱化了类型的概念,到 7.x 版本后,一个索引只能创建一个默认的类型 “_doc”,8.0 之后,类型被完全删除。这是因为在实际应用中,多类型索引带来了一些问题,比如资源浪费、字段冲突、查询效率低下等。Lucene 作为 Elasticsearch 的底层引擎,其倒排索引的生成是基于索引的,而不是基于类型,多个类型反而会影响搜索速度。虽然类型的概念逐渐被废弃,但了解它的发展历程,有助于我们更好地理解 Elasticsearch 的架构演进。

(三)文档(Document)

文档是 Elasticsearch 中存储数据的基本单元,它类似于关系型数据库中的行数据 。每个文档都是一个独立的 JSON 格式的数据记录,包含一个或多个字段(field),每个字段都有对应的名称和值。例如,在 “products” 索引中,一个商品文档可能如下所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大雨淅淅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值