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