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

🎯 一、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。

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

相关推荐
说私域11 分钟前
知乎平台搜索引擎引流策略与“开源AI大模型AI智能名片S2B2C商城小程序源码“的深度融合研究
人工智能·搜索引擎·微信·小程序·开源·零售
阿里云大数据AI技术18 分钟前
使用DataWorks Notebook实现智能图片标注,给你的图片加个“注释”
大数据·数据分析
Elasticsearch1 小时前
在 Elasticsearch 中扩展后期交互模型 - 第 2 部分 - 8.18
elasticsearch
不爱学习的小枫1 小时前
spark的数据源
大数据·分布式·spark
GIS数据转换器2 小时前
低空飞行管控服务智慧城市关键技术与挑战
大数据·运维·人工智能·gis·智慧城市
viperrrrrrrrrr73 小时前
大数据学习(78)-spark streaming与flink
大数据·学习·flink·spark
随缘而动,随遇而安3 小时前
第二十九篇 数据仓库与商务智能:技术演进与前沿趋势深度解析
大数据·数据库·数据仓库·数据库开发·数据库架构
电鱼智能的电小鱼6 小时前
eFish-SBC-RK3576 工业HMI硬件方案设计
大数据·人工智能·嵌入式硬件·智慧城市·边缘计算
viperrrrrrrrrr710 小时前
大数据学习(74)-Hue元数据
大数据·hive·impala·hue·metasrore
铭毅天下14 小时前
《一本书讲透 Elasticsearch》勘误表
大数据·elasticsearch·搜索引擎·全文检索