Elasticsearch实战应用:从“搜索小白”到“数据侦探”的进阶之路
引言: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都能帮助你快速找到你需要的数据,挖掘出隐藏的线索。
如果你觉得这篇文章对你有帮助,别忘了点赞、分享和关注哦!我们下次再见,继续探索更多有趣的技术话题!
相关文章:
Elasticsearch实战应用:从“搜索小白”到“数据侦探”的进阶之路
引言:Elasticsearch——数据世界的“福尔摩斯” 大家好,今天我们要聊的是一个在数据世界中扮演“福尔摩斯”角色的工具——Elasticsearch。如果你曾经为海量数据的搜索和分析头疼不已,那Elasticsearch就是你的救星!它不仅能帮你快…...
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是一种广泛应用于三维建模的文件格式&…...
java中双亲委派详解
什么是双亲委派机制? 双亲委派机制(Parent Delegation Model)是Java类加载器(ClassLoader)加载类时的一种策略。它的核心思想是:当一个类加载器收到加载类的请求时,不会立即自己加载࿰…...
【Python爬虫(27)】探索数据可视化的魔法世界
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取ÿ…...
网络安全-js安全知识点与XSS常用payloads
简介 JavaScript 是一种轻量级的编程语言,定义了HTML的行为。它与Java的关系类似周杰和周杰伦的关系(即没有关系)。 用法 HTML 中的脚本必须位于 <script> 与 </script> 标签之间。 脚本可被放置在 HTML 页面的 <body>…...
ip属地是电话号码吗怎么改
在数字化时代,IP属地作为网络身份的一部分,对于许多互联网用户来说并不陌生。然而,关于IP属地的具体含义以及如何更改它,却常常让一些用户感到困惑。特别是当提到IP属地与电话号码之间的关系时,更是容易让人产生误解。…...
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 如果成功安装ÿ…...
【Vue.js 和 React.js 的主要区别是什么?】
Vue.js 和 React.js 的主要区别是什么? 前言 Vue.js 和 React.js 是当前最流行的两个前端框架,它们都用于构建用户界面,但在设计理念、语法和使用方式上有显著差异。本文将从多个维度对比 Vue.js 和 React.js 的主要区别,帮助开…...
HarmonyOS NEXT 全栈开发实战手册(API 12+)
一、HarmonyOS NEXT 架构升级与关键技术 1.1 分布式能力增强(重点标注) 跨设备计算网格:支持动态分配 GPU/CPU/NPU 资源 // 分布式渲染示例(API 12) import renderService from ohos.distributedHardware.render; l…...
【rt-thread】rt-thread 控制 led 的两种方式
1. pin设备 #define LED_PIN 3int led(void) {rt_uint8_t count;rt_pin_mode(LED_PIN, PIN_MODE_OUTPUT); for(count 0 ; count < 10 ;count){ rt_pin_write(LED_PIN, PIN_HIGH);rt_kprintf("led on, count : %d %d\r\n", count, rt_pin_read(LED_PIN));…...
Python爬虫系列教程之第十三篇:构建高可用爬虫系统 —— 混合架构与自动化监控
大家好,欢迎继续关注本系列爬虫教程!随着爬虫项目规模的不断扩大和业务需求的提升,单一技术方案往往难以满足实际应用中对高可用性、稳定性和自动化监控的要求。如何构建一个既能应对多种反爬策略,又能在异常情况下自动恢复、实时…...
picomax 中 rkipc 的main.c文件分析
main函数 int main(int argc, char **argv) {//wait_key_event 这个进程的pidpthread_t key_chk;LOG_DEBUG("main begin\n");//luckfox-pico/project/app/rkipc/rkipc/common/common.c中//显示版本rkipc_version_dump();//设置信号signal(SIGINT, sig_proc);signal(…...
深入理解 JVM 的栈帧结构
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...
[oeasy]python068_异常处理之后做些什么_try语句的完全体_最终_finally
068_异常处理之后做些什么_finally 异常处理之后做些什么_try语句的完全体_最终_finally 回忆上次内容 我们了解了 try 的细节 except 可以 捕获到异常 但报错比较简单 添加图片注释,不超过 140 字(可选) 游乐场里面的 报错 更全 更丰富 …...
数据库端性能测试优化案例
数据库端性能测试优化案例 数据库是系统性能的关键瓶颈之一,特别是在高并发、大数据量的场景下。以下是一些典型的数据库端性能测试优化案例,涵盖了查询优化、索引策略、连接池管理、分布式数据库设计等多个方面: 1. 案例:优化慢…...
如何实现使用DeepSeek的CV模型对管道内模糊、低光照或水渍干扰的图像进行去噪、超分辨率重建。...
要使用 DeepSeek 的 CV 模型对管道内模糊、低光照或水渍干扰的图像进行去噪、超分辨率重建,一般可以按照以下步骤实现: 1. 准备工作 1.1 获取 API 访问权限 首先,你需要从 DeepSeek 官方获取 API 访问权限和相应的 API 密钥。这通常需要在 De…...
PySide6学习专栏(四):用多线程完成复杂计算任务
如果计程序中要处理一个非常庞大的数据集中的数据,且数据处理计算很复杂,造成数据处理占用大量时间和CPU资源,如果不用多线程,仅在主进程中来处理数据,将会使整个程序卡死,必须采用多线程来处理这些数据是唯…...
神经网络八股(1)
1.什么是有监督学习,无监督学习 有监督学习是带有标签的,无监督学习是没有标签的,简单来说就是有监督学习的输入输出都是固定的,已知的,无监督学习输入是已知的,输出是不固定的,无监督学习是通…...
深度学习每周学习总结Y1(Yolov5 调用官方权重进行检测 )
🍨 本文为🔗365天深度学习训练营 中的学习记录博客Y1中的内容 🍖 原作者:K同学啊 | 接辅导、项目定制 ** 注意该训练营出现故意不退押金,恶意揣测偷懒用假的结果冒充真实打卡记录,在提出能够拿到视频录像…...
计算机视觉基础|从 OpenCV 到频域分析
一、引言 在当今数字化时代,图像处理已渗透到我们生活的方方面面,从日常使用的智能手机拍照美化,到医学领域的精准诊断,再到自动驾驶中的环境感知,其重要性不言而喻。在图像处理领域中,OpenCV 和频域分析&…...
74. 搜索二维矩阵(LeetCode 热题 100)
题目来源; 74. 搜索二维矩阵 - 力扣(LeetCode) 题目内容: 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &am…...
netcore libreoffice word转pdf中文乱码
一、效果 解决: 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, 应用程序编程接口),包含了一系列可以操作图形、图像的函数。然而,OpenGL本身并不是一个API,它仅仅是一个由Khronos组织制定并维护的规范(Specification)。 OpenGL规…...
【时时三省】(C语言基础)求多项式1-1/2+1/3-1/4+...+1/99-1/100的值 用C语言表示
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 示例: 输出结果是 0.688172...
kafka-集群缩容
一. 简述: 当业务增加时,服务瓶颈,我们需要进行扩容。当业务量下降时,为成本考虑。自然也会涉及到缩容。假设集群有 15 台机器,预计缩到 10 台机器,那么需要做 5 次缩容操作,每次将一个节点下线…...
Ubuntu22.04 - etcd的安装和使用
目录 介绍安装Etcd安装etcd的客户端使用 介绍 Etcd 是一个 golang 编写的分布式、高可用的一致性键值存储系统,用于配置共享和服务发现等。它使用 Raft 一致性算法来保持集群数据的一致性,且客户端通过长连接watch 功能,能够及时收到数据变化…...
排查JVM的一些命令
查看JVM相关信息的方法 环境: Win10, jdk17 查看端口的Pid netstat -ano | findstr <端口号>列出当前运行的JVM进程 ## 用于输出JVM中运行的进程状态信息。通过jps,可以快速获取Java进程的PID(进程标识符), …...
