Elasticsearch实战应用:从基础到高级

server/2025/1/16 21:58:06/

引言

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够快速地存储、搜索和分析大量数据。它广泛应用于日志分析、全文搜索、实时数据分析等场景。本文将深入探讨 Elasticsearch 的实战应用,涵盖从基础概念到高级应用的各个方面。

1. Elasticsearch 基础

1.1 核心概念

  • 索引(Index):类似于关系数据库中的“数据库”,是存储文档的地方。

  • 类型(Type):在 Elasticsearch 6.x 及之前版本中,索引可以包含多个类型,类似于“表”。但在 7.x 及以后版本中,类型被废弃,每个索引只能包含一个类型。

  • 文档(Document):索引中的基本数据单元,类似于关系数据库中的“行”。

  • 分片(Shard):索引可以被分成多个分片,每个分片是一个独立的索引,分布在集群中的不同节点上。

  • 副本(Replica):每个分片可以有多个副本,用于提高数据的可用性和查询性能。

1.2 安装与配置

Elasticsearch 的安装非常简单,可以通过以下步骤完成:

  1. 下载 Elasticsearch 安装包。

  2. 解压并运行 bin/elasticsearch 启动 Elasticsearch。

  3. 访问 http://localhost:9200 确认 Elasticsearch 是否正常运行。

配置文件 elasticsearch.yml 位于 config 目录下,常用的配置项包括:

  • cluster.name:集群名称。

  • node.name:节点名称。

  • network.host:绑定的网络地址。

  • discovery.seed_hosts:集群发现的主机列表。

2. 数据索引与搜索

2.1 创建索引

PUT /my_index
{"settings": {"number_of_shards": 3,"number_of_replicas": 1},"mappings": {"properties": {"title": { "type": "text" },"description": { "type": "text" },"price": { "type": "float" }}}
}

2.2 索引文档

POST /my_index/_doc/1
{"title": "Elasticsearch Guide","description": "A comprehensive guide to Elasticsearch","price": 29.99
}

2.3 搜索文档

GET /my_index/_search
{"query": {"match": {"title": "Elasticsearch"}}
}

3. 高级查询

3.1 布尔查询

布尔查询允许组合多个查询条件,常用的布尔操作符包括 mustshouldmust_not

GET /my_index/_search
{"query": {"bool": {"must": [{ "match": { "title": "Elasticsearch" } },{ "range": { "price": { "gte": 20, "lte": 30 } } }]}}
}

3.2 聚合查询

聚合查询用于对数据进行统计分析,常见的聚合类型包括 termsavgsum 等。

GET /my_index/_search
{"size": 0,"aggs": {"avg_price": {"avg": { "field": "price" }}}
}

4. 性能优化

4.1 分片与副本策略

  • 分片数量:分片数量应根据数据量和集群规模合理设置,过多的分片会增加集群的管理开销。

  • 副本数量:副本数量应根据查询负载和数据安全性需求设置,增加副本可以提高查询性能和数据可用性。

4.2 查询优化

  • 使用过滤器:过滤器(filter)不会计算相关性分数,性能优于查询(query)。

  • 避免深度分页:深度分页(如 from 和 size 参数过大)会导致性能问题,建议使用 search_after 或 scroll API。

5. 实战案例:日志分析系统

5.1 系统架构

  • 数据采集:使用 Filebeat 采集日志数据。

  • 数据存储:将日志数据存储到 Elasticsearch 中。

  • 数据展示:使用 Kibana 进行数据可视化和分析。

5.2 实现步骤

5.2.1 安装与配置 Filebeat

5.3 实际应用

假设我们有一个 Web 服务器,每天生成大量的访问日志。通过上述系统,我们可以实时采集这些日志,并存储到 Elasticsearch 中。然后,使用 Kibana 进行数据可视化,分析访问量、错误日志、用户行为等。

例如,我们可以创建一个仪表盘,展示以下信息:

通过这些分析,我们可以及时发现系统异常、优化用户体验,并为业务决策提供数据支持。

6. 总结

Elasticsearch 是一个功能强大且灵活的搜索和分析引擎,适用于各种数据存储和检索场景。通过本文的介绍,读者可以掌握 Elasticsearch 的基础知识、高级查询技巧以及性能优化方法,并能够将其应用于实际的日志分析系统中。希望本文能为读者在实际项目中应用 Elasticsearch 提供有价值的参考。

  1. 下载并安装 Filebeat

    curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.10.0-linux-x86_64.tar.gz
    tar xzvf filebeat-7.10.0-linux-x86_64.tar.gz
    cd filebeat-7.10.0-linux-x86_64
  2. 配置 Filebeat

    编辑 filebeat.yml 文件,配置日志文件路径和 Elasticsearch 输出:

    filebeat.inputs:
    - type: logenabled: truepaths:- /var/log/*.logoutput.elasticsearch:hosts: ["localhost:9200"]

  3. 启动 Filebeat

    ./filebeat -e
    5.2.2 创建索引模板
  4. 定义索引模板

    创建一个索引模板,确保日志数据按照预期格式存储:

    PUT /_template/logs_template
    {"index_patterns": ["logs-*"],"settings": {"number_of_shards": 3,"number_of_replicas": 1},"mappings": {"properties": {"@timestamp": { "type": "date" },"message": { "type": "text" },"source": { "type": "keyword" },"level": { "type": "keyword" }}}
    }
    5.2.3 配置 Kibana
  5. 启动 Kibana

    下载并启动 Kibana,访问 http://localhost:5601

  6. 创建索引模式

    在 Kibana 中创建索引模式 logs-*,用于匹配 Elasticsearch 中的日志索引。

  7. 设计仪表盘

    使用 Kibana 的可视化工具创建仪表盘,展示日志数据的统计信息,如日志级别分布、日志来源分布等。

  8. 访问量趋势:按时间统计访问量,使用折线图展示。

  9. 错误日志分布:按日志级别统计错误日志数量,使用柱状图展示。

  10. 用户行为分析:按用户 IP 统计访问次数,使用饼图展示。


http://www.ppmy.cn/server/158926.html

相关文章

mysql 等保处理,设置wait_timeout引发的问题

👨‍⚕ 主页: gis分享者 👨‍⚕ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕ 收录于专栏:运维工程师 文章目录 前言问题处理 前言 系统部署完成后,客户需要做二级等保&…

【Unity-Game4Automation PRO 插件】

Game4Automation PRO 插件 是一个用于 Unity 引擎 的工业自动化仿真工具,它提供了对工业自动化领域的仿真和虚拟调试支持,特别是在与工业机器人、生产线、PLC 系统的集成方面。该插件旨在将工业自动化的实时仿真与游戏开发的高质量 3D 可视化能力结合起来…

CVE-2025-22777 (CVSS 9.8):WordPress | GiveWP 插件的严重漏洞

漏洞描述 GiveWP 插件中发现了一个严重漏洞,该插件是 WordPress 最广泛使用的在线捐赠和筹款工具之一。该漏洞的编号为 CVE-2025-22777,CVSS 评分为 9.8,表明其严重性。 GiveWP 插件拥有超过 100,000 个活跃安装,为全球无数捐赠平…

wordpress 房产网站筛选功能

自定义分类法创建 add_action( init, ashu_post_type ); function ashu_post_type() {register_taxonomy(province,post,array(label => 省,rewrite => array( slug => province ),hierarchical => true));register_taxonomy(city,post,array(label => 市,rewr…

网络攻击行为可视化分析系统【数据分析 + 可视化】

一、系统背景 随着信息技术的快速发展,网络已成为现代社会不可或缺的一部分。然而,与此同时,网络攻击手段也日益多样化和复杂化,给企业和个人的信息安全带来了极大的威胁。传统的网络攻击分析方法往往依赖于人工分析和处理大量的…

HarmonyOS 鸿蒙 ArkTs(5.0.1 13)实现Scroll下拉到顶刷新/上拉触底加载,Scroll滚动到顶部

HarmonyOS 鸿蒙 ArkTs(5.0.1 13)实现Scroll下拉到顶刷新/上拉触底加载 效果展示 使用方法 import LoadingText from "../components/LoadingText" import PageToRefresh from "../components/PageToRefresh" import FooterBar from "../components/…

改进萤火虫算法之八:量子萤火虫算法(Quantum-behaved Firfly Algorithm,QFA)

量子萤火虫算法(Quantum-behaved Firfly Algorithm,QFA)是对萤火虫算法的一种改进,旨在提升萤火虫个体的搜索能力。以下是对量子萤火虫算法的详细介绍: 一、萤火虫算法基础 萤火虫算法(Firefly Algorithm,FA)是一种基于群体智能的优化算法,由剑桥大学的Xin-She Yang在…

Soildworks的学习【2025/1/12】

右键空白处,点击选项卡,即可看到所有已调用的选项卡: 点击机械小齿轮选项卡,选择文档属性,选择GB国标: 之后点击单位,选择MMGS毫米单位: 窗口右下角有MMGS,这里也可以选择…