Elasticsearch基础教程:从入门到上手

devtools/2025/3/21 5:05:59/

🎯 一、Elasticsearch简介

Elasticsearch(简称ES)是一个分布式、RESTful风格的搜索引擎,支持全文检索、结构化查询、分析和近实时搜索。常用于日志分析、商品搜索、数据分析等场景。

1. 什么是 Elasticsearch?

Elasticsearch 是一个基于 Lucene 的开源搜索引擎,通常用于实时分布式搜索和数据分析。它支持各种类型的数据索引,包括文本、数字、日期等,可以用于实现高效的搜索、日志分析、实时监控等应用。

2. Elasticsearch 的核心概念
  • 索引(Index):类似数据库中的表,用于存储文档。
  • 文档(Document):存储数据的基本单位,类似于数据库中的行。
  • 字段(Field):文档中的数据项,类似数据库中的列。
  • 节点(Node):运行 Elasticsearch 实例的服务器。
  • 集群(Cluster):多个节点组成的 Elasticsearch 集合。

🛠️ 二、环境安装

1️⃣ 下载Elasticsearch

前往官网下载对应版本。

2️⃣ 启动ES

解压后直接运行:

./bin/elasticsearch

默认访问地址:http://localhost:9200


🔧 三、基本操作

1️⃣ 创建索引

PUT /products
{"settings": {"number_of_shards": 1,"number_of_replicas": 1},"mappings": {"properties": {"name": { "type": "text" },"price": { "type": "float" },"stock": { "type": "integer" }}}
}

2️⃣ 添加数据

POST /products/_doc/1
{"name": "iPhone 13","price": 6999,"stock": 50
}

3️⃣ 查询数据

GET /products/_search
{"query": {"match": { "name": "iPhone" }}
}

4️⃣ 更新数据

POST /products/_update/1
{"doc": { "stock": 45 }
}

5️⃣ 删除数据

🔥 四、进阶查询

1️⃣ 条件组合查询

GET /products/_search
{"query": {"bool": {"must": [ { "match": { "name": "iPhone" }} ],"filter": [ { "range": { "price": { "gte": 5000 }}} ]}}
}

2️⃣ 聚合分析

GET /products/_search
{"aggs": {"average_price": { "avg": { "field": "price" }}}
}

🚀 五、进阶版:复杂查询、Mapping映射、分词器、性能调优

1️⃣ 全文检索与多字段查询

GET /products/_search
{"query": {"multi_match": {"query": "iPhone","fields": ["name", "description"]}}
}

2️⃣ 自定义Mapping映射

PUT /products
{"mappings": {"properties": {"name": { "type": "text", "analyzer": "standard" },"description": { "type": "text", "analyzer": "ik_max_word" }}}
}

3️⃣ 分词器调试

GET /_analyze
{"analyzer": "ik_max_word","text": "Elasticsearch 中文教程"
}

4️⃣ 性能调优

  • 合理分片与副本设置

  • 关闭不必要的字段存储

  • 利用doc_values提升聚合性能

  • 定期优化索引与清理旧数据

六、Kibana入门

Kibana是Elasticsearch的可视化工具,可以帮助我们更直观地管理数据、创建图表。

1️⃣ 下载与启动Kibana

从官网下载并解压,运行:

./bin/kibana

访问:http://localhost:5601

2️⃣ 连接Elasticsearch

在Kibana的管理页面配置ES地址,确保能连接到 http://localhost:9200

3️⃣ 数据查询与可视化

  • Dev Tools:可以直接输入ES查询语句。

  • Discover:快速查看索引数据。

  • Visualize:创建图表,如柱状图、饼图等。

  • Dashboard:将多个图表整合成一个面板,方便展示。


🛠️ 七、Logstash入门

Logstash 是 Elastic Stack 数据采集与处理组件,常用于将数据从各种来源(如日志文件、数据库等)收集、转换并传输到 Elasticsearch。

1️⃣ 下载与安装Logstash

前往官网下载对应版本并解压。

2️⃣ 编写简单Logstash配置

创建一个配置文件 logstash-simple.conf,内容如下:

input {file {path => "/var/log/syslog"start_position => "beginning"}
}filter {grok {match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} %{GREEDYDATA:message}" }}
}output {elasticsearch {hosts => ["localhost:9200"]index => "logs-%{+YYYY.MM.dd}"}stdout { codec => rubydebug }
}

3️⃣ 启动Logstash

./bin/logstash -f logstash-simple.conf

4️⃣ 检查Elasticsearch

GET /logs-*/_search

确认日志数据是否成功传入。

🔥 八、Beats数据采集入门

Beats是轻量级的数据采集工具,可以从服务器、容器、网络等采集不同类型的数据。

1️⃣ 下载Filebeat

前往官网下载Filebeat。

2️⃣ 配置Filebeat

编辑 filebeat.yml 文件,指定输入日志路径和输出Elasticsearch地址:

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

3️⃣ 启动Filebeat

./filebeat -e

4️⃣ 查看采集数据

GET /filebeat-*/_search

确认日志是否成功传入ES。


🔥 九、性能优化小贴士

1️⃣ 设置索引合理分片:创建时根据数据量决定分片数量,避免过多小索引。

2️⃣ 禁用不必要的字段_source_all等字段按需关闭,减少存储开销。

3️⃣ 合理使用缓存:缓存热数据查询结果,提升响应速度。


🎉 十、总结

Elasticsearch在数据检索和分析领域非常强大,简单易用又灵活。结合Kibana、Logstash和Beats,能更高效地管理和处理数据。希望这篇基础版教程能让你快速入门Elastic Stack。

🚀 记得点赞👍、收藏⭐、评论💬,更多干货等着你!


http://www.ppmy.cn/devtools/168806.html

相关文章

以太坊生态中有代币标准和协议,针对不同场景设计了丰富的功能

一、同质化代币(Fungible Tokens) 1. ERC-20(基础标准) 用途:同质化代币(如 USDT、UNI)。 特点:标准化转账和授权接口。 2. ERC-777(增强版 ERC-20) 改进…

Python----计算机视觉处理(Opencv:图像颜色替换)

一、开运算 开运算就是对图像先进行腐蚀操作, 然后进行膨胀操作。开运算可以去除二值化图中的小的噪点,并分离相连的物体。 其主要目的就是消除那些小白点 在开运算组件中,有一个叫做kernel的参数,指的是核的大小,通常…

深度学习多模态人脸情绪识别:从理论到实践

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。https://www.captainbed.cn/north 文章目录 1. 引言2. 技术框架与流程图3. 核心算法解析3.1 视觉特征提取(CNN)3.2…

【QT:窗口】

目录 窗口概述: 菜单栏的使用: 给菜单设置快捷键: 添加子菜单: 添加分割线:​编辑 给菜单添加图标: QMenuBar的创建: 工具栏: 给工具栏添加图标 添加多个工具栏&#xff1a…

HTML5 drag API实现列表拖拽排序

拖拽API(Drag and Drop API)是HTML5提供的一组功能,使得在网页上实现拖放操作变得更加简单和强大。这个API允许开发者为网页元素添加拖拽功能,用户可以通过鼠标将元素拖动并放置到指定的目标区域。 事件类型 dragstart&#xff1…

为什么渲染农场渲染帧而非视频?核心原因 + 举例

核心原因 举例 1. 并行加速 原理:每帧独立计算,多台电脑同时工作。 举例:100 帧动画→100 台电脑各渲 1 帧,1 小时完成(单台需 100 小时) 2. 改错成本低 原理:单帧出错仅需重渲该帧&#xf…

STM32之I2C硬件外设

注意:硬件I2C的引脚是固定的 SDA和SCL都是复用到外部引脚。 SDA发送时数据寄存器的数据在数据移位寄存器空闲的状态下进入数据移位寄存器,此时会置状态寄存器的TXE为1,表示发送寄存器为空,然后往数据控制寄存器中一位一位的移送数…

大模型学习-从零开始在colab训练大模型

目录 写这篇文章的目的 1.准备训练所需的文件 2.将压缩包上传到谷歌云盘 使用colab 3.训练 写这篇文章的目的 这篇文章是对:大模型学习-在colab中训练并更换模型_colab调整模型-CSDN博客的一个优化,因为在之前的博文中,我是提供了一个现…