Easticsearch介绍|实战?
Elasticsearch 是一个分布式的、RESTful 风格的搜索和数据分析引擎,适用于各种用例,如日志分析、全文搜索、实时应用监控等。它设计用来处理大量数据,并且可以快速地提供相关的搜索结果。以下是一些 Elasticsearch 的实战应用场景以及如何在这些场景中有效使用 Elasticsearch。
1. 日志分析(Log Analysis)
应用背景
企业每天都会产生大量的日志数据,这些数据对于故障排查、性能优化和安全审计非常重要。Elasticsearch 可以与 Logstash 和 Kibana 组合使用,形成 ELK Stack 来收集、解析、索引和可视化日志数据。
实战技巧
- 定义合理的索引模式:为不同的日志类型创建特定的索引模板,确保字段映射正确。
- 使用时间序列索引:根据日期创建索引(如 logstash-%{+YYYY.MM.dd}),以便更有效地管理和查询日志。
- 设置合适的分片数:过多或过少的分片都会影响性能,需要基于集群规模和数据量进行调整。
- 定期滚动索引:通过 ILM (Index Lifecycle Management) 功能自动管理索引生命周期,减少老数据对系统资源的占用。
- 优化查询性能:利用缓存机制、预过滤条件等手段提高查询速度。
2. 全文搜索(Full-Text Search)
应用背景
无论是电子商务网站的商品搜索,还是企业内部的知识库查找,全文搜索都是用户获取信息的重要方式。Elasticsearch 提供了强大的文本分析能力和丰富的查询 DSL(Domain Specific Language)来满足复杂的搜索需求。
实战技巧
- 选择合适的分词器:根据语言特点选择适当的分词器(Analyzer),例如中文可以使用 IK 分词器。
- 配置自定义的分析链:通过组合多个字符过滤器、分词器和词汇过滤器构建适合业务场景的分析链。
- 使用布尔查询组合条件:灵活运用
must
、should
、must_not
等逻辑运算符构造复杂的查询语句。 - 实现相关性排序:借助
_score
字段对文档进行评分并排序,提升搜索结果的相关度。 - 支持多语言和模糊匹配:可以通过配置多字段映射或多值字段来同时支持多种语言或允许一定程度的拼写错误。
3. 实时应用监控(Real-Time Application Monitoring)
应用背景
现代应用程序通常部署在微服务架构下,每个服务可能分布在不同的节点上运行。为了保证系统的稳定性和性能,需要实时监控各个组件的状态,并及时响应异常情况。
实战技巧
- 集成 APM(Application Performance Management)工具:如 Elastic APM,它可以自动捕捉应用的性能指标,包括请求延迟、吞吐量和服务健康状况。
- 设定告警规则:基于特定的阈值或模式触发告警通知,帮助运维人员快速定位问题。
- 可视化关键指标:利用 Kibana 创建仪表盘展示 CPU 使用率、内存消耗、网络流量等重要信息。
- 追踪分布式事务:记录整个调用链条中的每一个步骤,便于分析瓶颈所在。
- 分析慢查询:识别耗时较长的操作,针对性地进行优化。
4. 数据分析(Data Analytics)
应用背景
随着大数据时代的到来,越来越多的企业希望通过数据分析挖掘商业价值。Elasticsearch 不仅能作为高效的搜索引擎,还能作为大规模数据集上的分析平台。
实战技巧
- 聚合查询:使用
terms
、histogram
、date_histogram
等聚合函数统计分类信息或趋势变化。 - 管道聚合:将多个聚合结果串联起来计算衍生指标,比如平均值、百分位数等。
- 地理空间分析:如果数据包含地理位置信息,可以利用 Geo Shape 查询进行区域筛选或距离计算。
- 机器学习功能:启用 Machine Learning 插件后,可以检测异常模式、预测未来趋势或分类未知数据点。
- 连接外部数据源:通过 JDBC 输入插件等方式从关系型数据库或其他存储系统导入结构化数据,丰富分析维度。
5. 安全事件响应(Security Event Response)
应用背景
网络安全是当今社会面临的重大挑战之一。组织需要建立完善的监测体系,以便第一时间发现潜在威胁并采取措施。
实战技巧
- 收集日志和事件:整合来自防火墙、入侵检测系统、端点保护平台等多个来源的安全事件。
- 关联规则分析:定义一系列规则来关联不同类型的事件,揭示隐藏的攻击行为。
- 威胁情报集成:引入第三方提供的 IOCs(Indicators of Compromise)列表,增强对已知恶意活动的识别能力。
- 自动化响应流程:当检测到可疑活动时,能够立即执行预定的响应动作,如阻断 IP 地址、隔离受感染主机等。
- 持续改进策略:根据新的安全威胁不断更新和完善防护机制。
Elasticsearch 实战应用指南
1. 安装与配置
安装 Elasticsearch
确保你的系统满足最低要求后,可以通过以下命令安装:
# 使用官方提供的包管理器(如Debian/Ubuntu)
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update && sudo apt-get install elasticsearch# 或者使用Docker
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.10.2
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.10.2
配置 Elasticsearch
编辑 /etc/elasticsearch/elasticsearch.yml
文件来设置集群名称、节点名称等参数:
cluster.name: my-application
node.name: node-1
network.host: 0.0.0.0
启动服务:
sudo systemctl start elasticsearch
2. 创建索引与映射
创建索引
你可以通过 REST API 或者 Kibana 的 Dev Tools 来创建索引:
PUT /my-index
{"settings": {"number_of_shards": 1,"number_of_replicas": 0}
}
定义映射
为字段指定类型和分析器,以优化搜索性能:
PUT /my-index/_mapping
{"properties": {"title": { "type": "text", "analyzer": "standard" },"content": { "type": "text", "analyzer": "ik_max_word" }, // 假设使用中文分词器IK"publish_date": { "type": "date" }}
}
3. 索引文档
向索引中添加数据:
POST /my-index/_doc
{"title": "Elasticsearch实战","content": "这是关于Elasticsearch的实战文章...","publish_date": "2024-01-01"
}
4. 查询文档
简单查询
GET /my-index/_search
{"query": {"match_all": {}}
}
全文搜索
GET /my-index/_search
{"query": {"match": {"content": "Elasticsearch"}}
}
布尔查询
组合多个条件进行复杂查询:
GET /my-index/_search
{"query": {"bool": {"must": [{ "match": { "content": "Elasticsearch" } },{ "range": { "publish_date": { "gte": "2024-01-01" } } }]}}
}
5. 数据可视化(Kibana)
安装 Kibana
同样可以使用包管理器或者 Docker 安装 Kibana:
sudo apt-get install kibana
# 或者
docker pull docker.elastic.co/kibana/kibana:7.10.2
docker run -p 5601:5601 docker.elastic.co/kibana/kibana:7.10.2
创建仪表盘
登录 Kibana 后,你可以创建各种图表和表格,并将它们组合成一个完整的仪表盘,用于监控和展示数据。
6. 性能调优
调整 JVM 参数
根据服务器硬件资源调整 Elasticsearch 的堆内存大小,在 jvm.options
文件中修改 -Xms
和 -Xmx
参数。
启用缓存
利用查询结果缓存 (request_cache
) 和分片请求缓存 (indices.queries.cache.size
) 提高重复查询的速度。
优化索引设置
适当减少副本数 (number_of_replicas
) 和增加刷新间隔 (refresh_interval
) 可以提高写入性能。
7. 监控与告警
集成 APM
安装 Elastic APM Agent 并将其配置到应用程序中,以便收集性能指标并设置告警规则。
使用 Watcher 插件
编写脚本来监控特定条件的变化,并在满足时触发通知或执行某些操作。
相关文章:
Easticsearch介绍|实战?
Elasticsearch 是一个分布式的、RESTful 风格的搜索和数据分析引擎,适用于各种用例,如日志分析、全文搜索、实时应用监控等。它设计用来处理大量数据,并且可以快速地提供相关的搜索结果。以下是一些 Elasticsearch 的实战应用场景以及如何在这…...
Python图形界面(GUI)Tkinter笔记(二十一):Messagebox信息提示功能控件
messagebox 就像是 tkinter 库里的一个好帮手,它能帮你弹出各种各样的消息框给用户看。这些消息框可以告诉用户很多东西,比如提示、警告或者错误信息之类的。在 tkinter 库里,messagebox 这个模块有很多不同的函数,每个函数都能弹出一种特定的消息框。用这些函数,开发者可…...

vue3+ts+element-plus 表单el-form取消回车默认提交
问题描述:在表单el-form中的el-input中按回车后,页面会刷新,url也会改变, 回车前: 回车后: 相关代码: 解决方法1:在 el-form 上阻止默认的 submit 事件,增加 submit.pre…...
Web Services 简介
Web Services 简介 1. 引言 Web Services 是一种基于网络的软件服务,它允许不同的应用程序在互联网上相互通信和交互。这种技术是基于开放的互联网标准,如HTTP、XML、SOAP和WSDL,使得不同平台和编程语言的应用程序能够轻松地实现互操作性。Web Services 的出现,极大地推动…...
Vue3苦逼的学习之路
从一名测试转战到全栈是否可以自学做到,很多朋友肯定会说不可能,或就算转了也是个一般水平,我很认同,毕竟没有经过各种项目的摧残,但是还是得踏足一下这个领域。所以今天和大家分享vue3中的相关内容,大佬勿…...

AcWing练习题:两点间的距离
给定两个点 P1 和 P2,其中 P1P1 的坐标为 (x1,y1),P2 的坐标为 (x2,y2),请你计算两点间的距离是多少。 distance√(x2−x1)^2(y2−y1)^2 输入格式 输入共两行,每行包含两个双精度浮点数 xi,yi,表示其中一个点的坐标…...

文献分享:RoarGraph——跨模态的最邻近查询
文章目录 1. \textbf{1. } 1. 导论 1.1. \textbf{1.1. } 1.1. 研究背景 1.2. \textbf{1.2. } 1.2. 本文的研究 1.3. \textbf{1.3. } 1.3. 有关工作 2. \textbf{2. } 2. 对 OOD \textbf{OOD} OOD负载的分析与验证 2.1. \textbf{2.1. } 2.1. 初步的背景及其验证 2.1.1. \textbf{2…...
故事可视化AI
i68,爱六八,链接你我他 StoryWeaver故事可视化 通过知识增强的角色定制技术,实现高质量的故事可视化论文链接:https://arxiv.org/pdf/2412.07375项目仓库:https://github.com/Aria-Zhangjl/StoryWeaver由厦门大学多媒体可信感知与高效计算教育部重点实验室和网易伏…...

【机器学习篇】从新手探寻到算法初窥:数据智慧的开启之门
文章目录 【机器学习篇】从新手探寻到算法初窥:数据智慧的开启之门前言一、什么是机器学习?二、机器学习的基本类型1. 监督学习(Supervised Learning)2. 无监督学习(Unsupervised Learning)3. 半监督学习&a…...
ffmpeg八大开发库
FFmpeg八大库是指FFmpeg项目中最重要的八个库,它们各自承担不同的功能,共同构成了FFmpeg的强大功能。以下是这八大库的详细介绍: libavcodec:负责音频和视频的编解码。它支持多种编解码器,如H.264、AAC、MP3、…...

【ArcGISPro/GeoScenePro】解决常见的空间参考和投影问题
修复空间参考缺失的图像 数据 https://arcgis.com/sharing/rest/content/items/535efce0e3a04c8790ed7cc7ea96d02d/data 查看属性坐标 查看属性范围 范围值并不是零或接近于零。 这意味着栅格具有范围,因此其已正确进行...

Linux上安装配置单节点zookeeper
直接先去官网下载安装包, https://downloads.apache.org/zookeeper/ 选择合适的版本,然后上传至服务器 解压: tar -zxvf apache-zookeeper-3.9.3-bin.tar.gz创建data和logs目录 mkdir data mkdir logs配置环境变量: vim /etc/p…...
现代光学基础-1
总结自老师的讲义 yt1 目录 光纤通信系统 组成部分三大里程碑技术实例分析 激光器 定义自振荡器的特性组成输出特性应用领域 受激辐射、自然辐射与吸收 LASER的定义受激辐射的特点光与物质的相互作用能量守恒与材料特性净增益条件 谐振器 定义组成部分性能描述 F-P谐振器&am…...
pytorch中nn.Conv2d详解及参数设置原则
文章目录 基础参数1. in_channels (输入通道数)2. out_channels (输出通道数)3. kernel_size (卷积核大小)4. stride (步幅)5. padding (填充)6. dilation (膨胀)7. groups (分组卷积)8. bias (偏置) 如何设置参数?1. **in_channels 和 out_channels(输入…...
T-SQL语言的正则表达式
T-SQL语言的正则表达式 在现代数据库管理系统中,SQL(结构化查询语言)被广泛用于数据的操作与管理。对数据的查询、插入、更新和删除几乎是每一个数据库管理系统中的基本功能。T-SQL(Transact-SQL)是微软对SQL的扩展&a…...

UDP_TCP
目录 1. 回顾端口号2. UDP协议2.1 理解报头2.2 UDP的特点2.3 UDP的缓冲区及注意事项 3. TCP协议3.1 报头3.2 流量控制2.3 数据发送模式3.4 捎带应答3.5 URG && 紧急指针3.6 PSH3.7 RES 1. 回顾端口号 在 TCP/IP 协议中,用 “源IP”, “源端口号”…...
Python 中常见的数据结构之二推导式
Python 中常见的数据结构之二推导式 使用推异式列表推导式字典推导式集合推导式 使用推异式 推导式是一种从已存在的序列中快速构建列表(list)、集合(set) 和 字典(dictionary)方式。Python 支持 3 种不同类型的推导式: 列表推导式;字典推导式…...

STM32 拓展 低功耗案例3:待机模式 (hal)
配置PA0的两种方式: 第一种 第二种 复制寄存器代码然后对其进行修改 mian.c /* USER CODE BEGIN Header */ /********************************************************************************* file : main.c* brief : Main program body…...
【开源社区openEuler实践】探索 Yocto-Meta-OpenEuler:嵌入式开发的强大基石
title: 探索 Yocto-Meta-OpenEuler:嵌入式开发的强大基石 date: ‘2024-11-19’ category: blog tags: Yocto-Meta-OpenEuler嵌入式系统开源项目定制化开发 sig: EmbeddedTech archives: ‘2024-12’ author:way_back summary: Yocto-Meta-OpenEuler 为嵌入式系统开…...
C++ hashtable
文章目录 1. 基本概念2. 哈希函数3. 哈希冲突及解决方法开放定址法链地址法再哈希法建立公共溢出区4. 哈希表的操作实现5. 内存管理及优化 时间复杂度理想情况(无哈希冲突或冲突极少)一般情况(考虑哈希冲突及解决方法)综合来看 以…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...

练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...

C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...