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

news2025/3/20 7:07:39

🎯 一、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: log
    enabled: true
    paths:
      - /var/log/*.log

output.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.coloradmin.cn/o/2318221.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《Python实战进阶》No27: 日志管理:Logging 模块的最佳实践(下)

No27: 日志管理:Logging 模块的最佳实践(下) 实战案例 :复杂场景下的 Logging 配置与使用 本实战案例在 Python 3.11.5环境下运行通过 在本案例中,我们将通过一个复杂的日志配置示例,全面展示 logging 模…

Web 小项目: 网页版图书管理系统

目录 最终效果展示 代码 Gitee 地址 1. 引言 2. 留言板 [热身小练习] 2.1 准备工作 - 配置相关 2.2 创建留言表 2.3 创建 Java 类 2.4 定义 Mapper 接口 2.5 controller 2.6 service 3. 图书管理系统 3.1 准备工作 - 配置相关 3.2 创建数据库表 3.2.1 创建用户表…

【Dive Into Stable Diffusion v3.5】1:开源项目正式发布——深入探索SDv3.5模型全参/LoRA/RLHF训练

目录 1 引言2 项目简介3 快速上手3.1 下载代码3.2 环境配置3.3 项目结构3.4 下载模型与数据集3.5 运行指令3.6 核心参数说明3.6.1 通用参数3.6.2 优化器/学习率3.6.3 数据相关 4 结语 1 引言 在人工智能和机器学习领域,生成模型的应用越来越广泛。Stable Diffusion…

《Waf 火绒终端防护绕过实战:系统程序副本+Certutil木马下载技术详解》

目录 绕过火绒终端安全软件的详细方法 方法一:利用系统程序副本绕过命令监控 方法二:结合certutil.exe副本下载并执行上线木马 注意事项 总结 实际案例解决方案 前提条件 详细操作步骤 1. 攻击主机(VPS)上的准备工作 2.…

上海高考解析几何

解析几何的核心思想。 1. 核心分析方法: 自由度引入 方程组中, n n n 个未知数需要 n n n 个等式来解出具体的值。 自由度 性质 一个未知数带来一个自由度,一个等式条件减少一个自由度(减少自由度的方式为消元)。…

【AVRCP】服务发现互操作性:CT 与 TG 的 SDP 协议契约解析

目录 一、服务发现的核心目标:能力画像对齐 二、控制器(CT)服务记录:控制能力的声明 2.1 必选字段:角色与协议的刚性契约 2.1.1 服务类标识(Service Class ID List) 2.1.2 协议描述列表&am…

MySQL:数据库基础

数据库基础 1.什么是数据库?2.为什么要学习数据库?3.主流的数据库(了解)4.服务器,数据库,表之间的关系5.数据的逻辑存储6.MYSQL架构7.存储引擎 1.什么是数据库? 数据库(Database,简称DB)&#x…

深入 Linux 声卡驱动开发:核心问题与实战解析

1. 字符设备驱动如何为声卡提供操作接口? 问题背景 在 Linux 系统中,声卡被抽象为字符设备。如何通过代码让应用程序能够访问声卡的录音和播放功能? 核心答案 1.1 字符设备驱动的核心结构 Linux 字符设备驱动通过 file_operations 结构体定…

OpenNJet动态API设置accessLog开关,颠覆传统运维工作模式

OpenNJet OpenNJet 应用引擎是高性能、轻量级的WEB应用与代理软件。作为云原生服务网格的数据平面,NJet具备动态配置加载、主动式健康检测、集群高可用、声明式API等多种强大功能。通过CoPliot副驾驶服务框架,在隔离控制面和数据面的情况下实现了高可扩…

案例5_4: 6位数码管轮播0-9【静态显示】

文章目录 文章介绍效果图提示代码&#xff08;不完整&#xff09; 文章介绍 5.1.2 数码管静态显示应用举例 要求&#xff1a; 1、仿真图同案例5_3 2、代码参考案例5_3和案例5_2 效果图 提示代码&#xff08;不完整&#xff09; #include<reg52.h> // 头文件#define uch…

navicat忘记已经连接过的数据库密码的操作步骤

第一步&#xff1a; 点击文件-》导出连接 第二步&#xff1a;选中具体的数据库&#xff0c;且勾选左下角的记住密码 第三步&#xff1a;打开刚刚导出的文件&#xff0c;找到对应加密后的密码 第四步&#xff1a;复制密码到工具点击查看密码 注&#xff1a;参考文章链接附…

Qt窗口坐标体系

坐标系&#xff1a;以左上角为原点&#xff08;0&#xff0c;0&#xff09;&#xff0c;X向右增加&#xff0c;Y向下增加 对于嵌套窗口&#xff0c;其坐标是相对于父窗口来说的 例如&#xff1a; 通过move方法实现

DeepSeek写打台球手机小游戏

DeepSeek写打台球手机小游戏 提问 根据提的要求&#xff0c;让DeepSeek整理的需求&#xff0c;进行提问&#xff0c;内容如下&#xff1a; 请生成一个包含以下功能的可运行移动端打台球小游戏H5文件&#xff1a; 要求 可以重新开始游戏 可以暂停游戏 有白球和其他颜色的球&am…

VR大空间多人互动方案,VR大空间融合AI行为预测的动捕技术

在数字科技迅猛发展的今天&#xff0c;VR大空间技术正逐步成为各行业探索沉浸式体验的重要方向。从企业培训、线上展览到社交元宇宙&#xff0c;VR大空间的应用范围不断拓展。而在这个过程中&#xff0c;多人实时交互成为核心需求&#xff0c;它不仅关乎沉浸感的提升&#xff0…

十四、OSG学习笔记-事件响应

上一章节 十三、OSG学习笔记-osgDB文件读写-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/146165712 本章节代码&#xff1a; OsgStudy/EventHandle CuiQingCheng/OsgStudy - 码云 - 开源中国https://gitee.com/cuiqingcheng/osg-study/tree/master/Osg…

JS逆向_腾讯点选_VMP补环境

1.接口分析 1.cap_union_prehandle 说明:图片、jsvmp GET QueryString:{aid: xxxxxx //网站在腾讯登记的idprotocol: httpsaccver: 1showtype: popupua: //ua atob后的结果noheader: 1fb: 1aged: 0enableAged: 0enableDarkMode: 0grayscale: 1clientype: 2cap_cd: uid: lang:…

【MySQL数据库】多表查询(笛卡尔积现象,联合查询、内连接、左外连接、右外连接、子查询)-通过练习快速掌握法

在DQL的基础查询中&#xff0c;我们已经学过了多表查询的一种&#xff1a;联合查询&#xff08;union&#xff09;。本文我们将系统的讲解多表查询。 笛卡尔积现象 首先&#xff0c;我们想要查询emp表和stu表两个表&#xff0c;按照我们之前的知识栈&#xff0c;我们直接使用…

DAPO-Decoupled Clip and Dynamic sAmpling Policy Optimization

论文地址&#xff1a;https://dapo-sia.github.io/static/pdf/dapo_paper.pdf 代码地址&#xff1a;https://github.com/volcengine/verl/tree/gm-tyx/puffin/main/recipe/dapo 数据&#xff1a;https://huggingface.co/datasets/BytedTsinghua-SIA/DAPO-Math-17k 1. 背景与动机…

数组模拟邻接表 #图论

文章目录 为什么要用数组来模拟邻接表存储思路遍历思路 树是特殊的图&#xff0c;因此邻接表可以存储图和树两种数据结构。 为什么要用数组来模拟邻接表 在算法设计当中&#xff0c;利用数组来代替结构体模拟各种数据结构会更加简单。 存储思路 给定如下数据,我们可以构造如…

VBA常见的知识都有哪些,让AI编写的VBA经常 报错,所以VBA的基础还是要学习的

掌握这些能够大大的提高VBA的编写效率&#xff0c;欢迎来到涛涛聊AI。 1. 异常处理 Cleanup:是VBScript的错误处理标签&#xff0c;用于标记程序执行失败或退出时需要执行的清理操作&#xff08;如关闭文件、释放对象&#xff09;。这段代码会在遇到错误或用户取消操作时跳转…