当前位置: 首页 > news >正文

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 分词器。
  • 配置自定义的分析链:通过组合多个字符过滤器、分词器和词汇过滤器构建适合业务场景的分析链。
  • 使用布尔查询组合条件:灵活运用 mustshouldmust_not 等逻辑运算符构造复杂的查询语句。
  • 实现相关性排序:借助 _score 字段对文档进行评分并排序,提升搜索结果的相关度。
  • 支持多语言和模糊匹配:可以通过配置多字段映射或多值字段来同时支持多种语言或允许一定程度的拼写错误。

3. 实时应用监控(Real-Time Application Monitoring)

应用背景

现代应用程序通常部署在微服务架构下,每个服务可能分布在不同的节点上运行。为了保证系统的稳定性和性能,需要实时监控各个组件的状态,并及时响应异常情况。

实战技巧
  • 集成 APM(Application Performance Management)工具:如 Elastic APM,它可以自动捕捉应用的性能指标,包括请求延迟、吞吐量和服务健康状况。
  • 设定告警规则:基于特定的阈值或模式触发告警通知,帮助运维人员快速定位问题。
  • 可视化关键指标:利用 Kibana 创建仪表盘展示 CPU 使用率、内存消耗、网络流量等重要信息。
  • 追踪分布式事务:记录整个调用链条中的每一个步骤,便于分析瓶颈所在。
  • 分析慢查询:识别耗时较长的操作,针对性地进行优化。

4. 数据分析(Data Analytics)

应用背景

随着大数据时代的到来,越来越多的企业希望通过数据分析挖掘商业价值。Elasticsearch 不仅能作为高效的搜索引擎,还能作为大规模数据集上的分析平台。

实战技巧
  • 聚合查询:使用 termshistogramdate_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 种不同类型的推导式: 列表推导式;字典推导式&#xf…...

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. 内存管理及优化 时间复杂度理想情况(无哈希冲突或冲突极少)一般情况(考虑哈希冲突及解决方法)综合来看 以…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

python/java环境配置

环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...

C++ 基础特性深度解析

目录 引言 一、命名空间(namespace) C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用(reference)​ C 中的引用​ 与 C 语言的对比​ 四、inline(内联函数…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

Java编程之桥接模式

定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...

在树莓派上添加音频输入设备的几种方法

在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...