Elasticsearch实战应用:从“搜索小白”到“数据侦探”的进阶之路

news2025/2/22 6:16:07

引言:Elasticsearch——数据世界的“福尔摩斯”

大家好,今天我们要聊的是一个在数据世界中扮演“福尔摩斯”角色的工具——Elasticsearch。如果你曾经为海量数据的搜索和分析头疼不已,那Elasticsearch就是你的救星!它不仅能帮你快速找到你需要的数据,还能让你像侦探一样,从数据中挖掘出隐藏的线索。今天,我们就来一起探索Elasticsearch的实战应用,从零开始,掌握这门“数据侦探”的必备技能。

什么是Elasticsearch?

1.1 Elasticsearch的基本概念

Elasticsearch是一个分布式的搜索和分析引擎,基于Apache Lucene构建。它能够快速地存储、搜索和分析大量数据。Elasticsearch的核心特点包括:

  • 分布式:数据可以分布在多个节点上,实现高可用性和扩展性。

  • 实时性:数据几乎可以实时地被索引和搜索。

  • 全文搜索:支持复杂的全文搜索功能,包括模糊搜索、短语搜索等。

  • 多租户:支持多个索引和类型,可以在一个集群中管理多种数据。

1.2 Elasticsearch的应用场景

  • 日志分析:通过Elasticsearch可以快速搜索和分析日志数据,帮助运维人员快速定位问题。

  • 电商搜索:电商平台可以利用Elasticsearch实现商品的快速搜索和推荐。

  • 数据分析:Elasticsearch可以与其他数据分析工具(如Kibana)结合,进行数据的可视化分析。

  • 监控系统:通过Elasticsearch可以实时监控系统的运行状态,及时发现异常。

Elasticsearch的核心概念

2.1 索引(Index)

索引是Elasticsearch中存储数据的地方,类似于关系数据库中的“数据库”。每个索引可以包含多个类型(Type),但在Elasticsearch 7.x之后,类型的概念逐渐被废弃,推荐每个索引只包含一个类型。

2.2 文档(Document)

文档是Elasticsearch中的基本数据单元,类似于关系数据库中的“行”。每个文档是一个JSON对象,包含多个字段(Field)。

2.3 分片(Shard)和副本(Replica)

Elasticsearch将索引分成多个分片,每个分片可以存储部分数据。分片可以分布在不同的节点上,实现数据的分布式存储。副本是分片的备份,用于提高数据的可用性和容错性。

实际操作:手把手教你搭建Elasticsearch环境

3.1 准备工作

在开始之前,我们需要准备以下工具和环境:

  • 操作系统:Ubuntu 20.04 LTS。

  • Java环境:Elasticsearch需要Java 8或更高版本。

  • Elasticsearch:我们选择Elasticsearch 7.x版本。

3.2 安装Java

首先,我们需要安装Java环境。使用以下命令安装OpenJDK 11:

sudo apt update
sudo apt install openjdk-11-jdk

验证Java安装

3.3 安装Elasticsearch

接下来,我们安装Elasticsearch。首先,下载并安装Elasticsearch的公钥:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

添加Elasticsearch的APT仓库:

sudo sh -c 'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elastic-7.x.list'

更新APT仓库并安装Elasticsearch:

sudo apt update
sudo apt install elasticsearch

启动并启用Elasticsearch服务:

sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch

3.4 验证安装

使用以下命令验证Elasticsearch是否正常运行:

curl -X GET "localhost:9200/"

如果看到类似以下的输出,说明Elasticsearch安装成功:

{
  "name" : "your-hostname",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "abc123",
  "version" : {
    "number" : "7.10.0",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "abc123",
    "build_date" : "2020-11-06T00:36:47.513Z",
    "build_snapshot" : false,
    "lucene_version" : "8.7.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

进阶操作:Elasticsearch的实战应用

4.1 创建索引

首先,我们创建一个名为my_index的索引:

curl -X PUT "localhost:9200/my_index" -H 'Content-Type: application/json' -d'
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1
  }
}'

4.2 添加文档

接下来,我们向my_index索引中添加一个文档:

curl -X POST "localhost:9200/my_index/_doc/1" -H 'Content-Type: application/json' -d'
{
  "title": "Elasticsearch实战应用",
  "content": "今天我们来学习Elasticsearch的实战应用。",
  "tags": ["elasticsearch", "搜索", "数据分析"]
}'

4.3 搜索文档

现在,我们可以通过以下命令搜索文档:

curl -X GET "localhost:9200/my_index/_search?q=title:实战"

4.4 使用DSL进行复杂搜索

Elasticsearch支持使用DSL(Domain Specific Language)进行复杂的搜索。例如,我们可以使用以下命令进行全文搜索:

curl -X GET "localhost:9200/my_index/_search" -H 'Content-Type: application/json' -d'
{
  "query": {
    "match": {
      "content": "学习"
    }
  }
}'

4.5 聚合分析

Elasticsearch还支持聚合分析,例如统计每个标签的文档数量:

curl -X GET "localhost:9200/my_index/_search" -H 'Content-Type: application/json' -d'
{
  "size": 0,
  "aggs": {
    "tags_count": {
      "terms": {
        "field": "tags.keyword"
      }
    }
  }
}'

结语:Elasticsearch——数据世界的“福尔摩斯”

通过今天的介绍,相信大家对Elasticsearch有了更深入的了解。Elasticsearch不仅是一个强大的搜索工具,还是一个灵活的数据分析平台。无论是日志分析、电商搜索,还是实时监控,Elasticsearch都能帮助你快速找到你需要的数据,挖掘出隐藏的线索。

如果你觉得这篇文章对你有帮助,别忘了点赞、分享和关注哦!我们下次再见,继续探索更多有趣的技术话题!

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

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

相关文章

Orange 单体架构 - 快速启动

1 后端服务 1.1 基础设施 组件说明版本MySQLMySQL数据库服务5.7/8JavaJava17redis-stackRedis向量数据库最新版本Node安装Node22.11.0 1.2 orange-dependencies-parent 项目Maven依赖版本管理 1.2.1 项目克隆 GitHub git clone https://github.com/hengzq/orange-depende…

Spring Boot 入门 与 无法解析符号 springframework 的解决

Spring Boot 入门的关键步骤 1 创建 Maven 工程 操作目的: 通过 Maven 工程来管理项目依赖,Spring Boot 本身就依赖 Maven 或 Gradle 来简化依赖管理。 操作方法: 打开 IDEA(IntelliJ IDEA)。点击 New Project&#…

3D模型在线转换工具:轻松实现3DM转OBJ

3D模型在线转换是一款功能强大的在线工具,支持多种3D模型格式的在线预览和互转。无论是工业设计、建筑设计,还是数字艺术领域,这款工具都能满足您的需求。 3DM与OBJ格式简介 3DM格式:3DM是一种广泛应用于三维建模的文件格式&…

网络安全-js安全知识点与XSS常用payloads

简介 JavaScript 是一种轻量级的编程语言&#xff0c;定义了HTML的行为。它与Java的关系类似周杰和周杰伦的关系&#xff08;即没有关系&#xff09;。 用法 HTML 中的脚本必须位于 <script> 与 </script> 标签之间。 脚本可被放置在 HTML 页面的 <body>…

ip属地是电话号码吗怎么改

在数字化时代&#xff0c;IP属地作为网络身份的一部分&#xff0c;对于许多互联网用户来说并不陌生。然而&#xff0c;关于IP属地的具体含义以及如何更改它&#xff0c;却常常让一些用户感到困惑。特别是当提到IP属地与电话号码之间的关系时&#xff0c;更是容易让人产生误解。…

Ubuntu中使用yum命令出现错误提示:Command ‘yum‘ not found

Ubuntu中使用yum命令出现以下错误提示: 解决方法如下 1、使用su或sudo -s命令使普通用户切换为root用户 2、然后检测是否安装了build-essential程序包,输入命令: apt-get install build-essential 3、进度走完后安装yum,输入命令: apt-get install yum 如果成功安装&#xff…

深入理解 JVM 的栈帧结构

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…

[oeasy]python068_异常处理之后做些什么_try语句的完全体_最终_finally

068_异常处理之后做些什么_finally 异常处理之后做些什么_try语句的完全体_最终_finally 回忆上次内容 我们了解了 try 的细节 except 可以 捕获到异常 但报错比较简单 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 游乐场里面的 报错 更全 更丰富 …

PySide6学习专栏(四):用多线程完成复杂计算任务

如果计程序中要处理一个非常庞大的数据集中的数据&#xff0c;且数据处理计算很复杂&#xff0c;造成数据处理占用大量时间和CPU资源&#xff0c;如果不用多线程&#xff0c;仅在主进程中来处理数据&#xff0c;将会使整个程序卡死&#xff0c;必须采用多线程来处理这些数据是唯…

神经网络八股(1)

1.什么是有监督学习&#xff0c;无监督学习 有监督学习是带有标签的&#xff0c;无监督学习是没有标签的&#xff0c;简单来说就是有监督学习的输入输出都是固定的&#xff0c;已知的&#xff0c;无监督学习输入是已知的&#xff0c;输出是不固定的&#xff0c;无监督学习是通…

深度学习每周学习总结Y1(Yolov5 调用官方权重进行检测 )

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客Y1中的内容 &#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 ** 注意该训练营出现故意不退押金&#xff0c;恶意揣测偷懒用假的结果冒充真实打卡记录&#xff0c;在提出能够拿到视频录像…

计算机视觉基础|从 OpenCV 到频域分析

一、引言 在当今数字化时代&#xff0c;图像处理已渗透到我们生活的方方面面&#xff0c;从日常使用的智能手机拍照美化&#xff0c;到医学领域的精准诊断&#xff0c;再到自动驾驶中的环境感知&#xff0c;其重要性不言而喻。在图像处理领域中&#xff0c;OpenCV 和频域分析&…

74. 搜索二维矩阵(LeetCode 热题 100)

题目来源; 74. 搜索二维矩阵 - 力扣&#xff08;LeetCode&#xff09; 题目内容&#xff1a; 给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非严格递增顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &am…

netcore libreoffice word转pdf中文乱码

一、效果 解决&#xff1a; cd /usr/share/fonts/ mkdir zhFont cd zhFont #windows系统C:\Windows\Fonts 中复制/usr/share/fonts/zhFont sudo apt update sudo apt install xfonts-utils mkfontscale mkfontdir #刷新字体缓存 fc-cache -fv #查看已安装的字体列表 fc-list :…

qt-C++笔记之创建和初始化 `QGraphicsScene` 和 `QGraphicsView` 并关联视图和场景的方法

qt-C笔记之创建和初始化 QGraphicsScene 和 QGraphicsView 并关联视图和场景的方法 code review! 参考笔记 1.qt-C笔记之创建和初始化 QGraphicsScene 和 QGraphicsView 并关联视图和场景的方法 2.qt-C笔记之QGraphicsScene和 QGraphicsView中setScene、通过scene得到view、通过…

OpenGL 01--构建GLFW、创建第一个工程、配置GLAD

一、OpenGL介绍 一般它被认为是一个API(Application Programming Interface, 应用程序编程接口)&#xff0c;包含了一系列可以操作图形、图像的函数。然而&#xff0c;OpenGL本身并不是一个API&#xff0c;它仅仅是一个由Khronos组织制定并维护的规范(Specification)。 OpenGL规…

【时时三省】(C语言基础)求多项式1-1/2+1/3-1/4+...+1/99-1/100的值 用C语言表示

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 示例&#xff1a; 输出结果是 0.688172

kafka-集群缩容

一. 简述&#xff1a; 当业务增加时&#xff0c;服务瓶颈&#xff0c;我们需要进行扩容。当业务量下降时&#xff0c;为成本考虑。自然也会涉及到缩容。假设集群有 15 台机器&#xff0c;预计缩到 10 台机器&#xff0c;那么需要做 5 次缩容操作&#xff0c;每次将一个节点下线…

Ubuntu22.04 - etcd的安装和使用

目录 介绍安装Etcd安装etcd的客户端使用 介绍 Etcd 是一个 golang 编写的分布式、高可用的一致性键值存储系统&#xff0c;用于配置共享和服务发现等。它使用 Raft 一致性算法来保持集群数据的一致性&#xff0c;且客户端通过长连接watch 功能&#xff0c;能够及时收到数据变化…

排查JVM的一些命令

查看JVM相关信息的方法 环境&#xff1a; Win10, jdk17 查看端口的Pid netstat -ano | findstr <端口号>列出当前运行的JVM进程 ## 用于输出JVM中运行的进程状态信息。通过jps&#xff0c;可以快速获取Java进程的PID&#xff08;进程标识符&#xff09;&#xff0c; …