Elasticsearch是什么?
Elasticsearch(简称ES)就像一个“超级智能的图书馆管理系统”,专门帮你从海量数据中快速找到想要的信息。它底层基于倒排索引技术(类似书籍的目录页),能秒级搜索和分析万亿级数据,比如电商商品、日志、用户行为等。
例子
当你在淘宝搜“华为手机”时,ES会瞬间从几十亿商品中筛选出相关结果,并按价格、销量排序。
当你的App崩溃了,ES能快速分析日志,定位到具体哪一行代码出问题。
Elasticsearch有什么用?
核心功能
全文搜索:支持模糊匹配、关键词高亮,比如搜“小米手机”能连带找出“小米充电宝” 。
实时数据分析:统计用户行为(如点击量、转化率),生成实时报表,比传统数据库快几十倍 。
日志管理:自动收集服务器、应用的日志,快速定位故障,还能预测潜在问题(比如流量突增预警)。
实际场景
电商:商品搜索、订单分析、用户画像。
金融:交易监控、风险预警、实时对账。
运维:服务器性能监控、日志排查。
社交:用户动态推荐、评论关键词过滤。
Elasticsearch怎么用?
安装与启动
下载安装包:从官网下载ES和Kibana(可视化工具),解压后运行:
# 启动ES(默认端口9200)
./bin/elasticsearch
# 启动Kibana(默认端口5601)
./bin/kibana
访问 http://localhost:9200 能看ES状态,访问 http://localhost:5601 用Kibana操作数据 。
存数据
创建索引(类似数据库建表):
PUT /products
{
"mappings": {
"properties": {
"name": { "type": "text" }, // 可分词搜索
"price": { "type": "float" },
"tags": { "type": "keyword" } // 精确匹配(如“华为”)
}
}
}
插入数据:
POST /products/_doc/1
{
"name": "华为Mate60",
"price": 6999,
"tags": ["手机", "5G"]
}
查数据:
简单搜索(找含“华为”的商品):
GET /products/_search
{
"query": {
"match": { "name": "华为" }
}
}
高级搜索(价格范围+标签过滤):
GET /products/_search
{
"query": {
"bool": {
"must": [
{ "range": { "price": { "gte": 5000 } } }, // 价格≥5000
{ "term": { "tags": "5G" } } // 标签精确匹配
]
}
}
}
** 分析数据**
统计每个标签的商品数量:
GET /products/_search
{
"aggs": {
"tag_count": {
"terms": { "field": "tags" }
}
}
}
注意事项
别当数据库用:
ES擅长搜索和分析,但事务处理弱(比如支付扣款),这类操作还是用MySQL。
硬件要求:
大数据量需要多台服务器组成集群,单机容易卡死
数据备份:
定期用快照功能备份,防止硬盘故障丢数据。