🎯 一、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。
🚀 记得点赞👍、收藏⭐、评论💬,更多干货等着你!