Elasticsearch入门指南:从零到精通
系列文章目录
第一章 ES基本概念
第二章 ES安装
文章目录
- 系列文章目录
- 前言
- 一、ES是什么?
- 二、核心概念
- 1.索引
- 2.文档
- 3.映射
- 4.分片
- 5.副本
- 三、查询
- 总结
前言
Elasticsearch是一个开源的分布式搜索和分析引擎,基于Apache Lucene构建,具备实时数据处理、全文检索和大规模数据分析能力,广泛应用于企业搜索、日志分析等场景。
一、ES是什么?
Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。
二、核心概念
1.索引(Index)
索引相当于关系型数据库中的 “表”,用于存储一类文档。
例如,创建一个名为 “products” 的索引,用于存储商品数据:
curl -X PUT "http://localhost:9200/products" -H "Content-Type: application/json" -d '
{"mappings": {"properties": {"id": {"type": "integer"},"name": {"type": "text", "analyzer": "ik_max_word"}, // 使用IK分词器(需额外安装),支持中文分词"price": {"type": "double"},"category": {"type": "keyword"}, // keyword类型不分词,适合精确匹配(如分类筛选)"create_time": {"type": "date", "format": "yyyy-MM-dd HH:mm:ss"}}}
}'
2.文档(Document)
索引中存储的数据,类似于数据库中的一行。
向 “products” 索引中添加一条商品文档(类似数据库中的 “插入数据”):
curl -X POST "http://localhost:9200/products/_doc/1" -H "Content-Type: application/json" -d '
{"id": 1,"name": "2024新款红色连衣裙中长款收腰显瘦","price": 299.9,"category": "女装","create_time": "2024-01-15 10:30:00"
}'
3. 映射(Mapping)
定义了索引中文档的结构,包括字段的类型、是否索引等,类似于数据库中得表结构。
4. 分片(Shard)
将索引分成多个分片以提高性能和可靠性
5. 副本(Replica)
每个主分片的副本,用于数据冗余和故障恢复。
三、查询
- 简单查询
查询 “products” 索引中 “名称包含连衣裙” 且 “价格小于 300” 的商品:
curl -X GET "http://localhost:9200/products/_search" -H "Content-Type: application/json" -d '
{"query": {"bool": {"must": [{"match": {"name": "连衣裙"}}], // 必须满足“名称包含连衣裙”"filter": [{"range": {"price": {"lt": 300}}}] // 过滤条件“价格小于300”}},"sort": [{"price": "asc"}] // 按价格升序排序
}'
- 聚合分析
统计 “products” 索引中各分类的商品数量:
curl -X GET "http://localhost:9200/products/_search" -H "Content-Type: application/json" -d '
{"size": 0, // 不返回具体文档,只返回聚合结果"aggs": {"category_count": {"terms": {"field": "category", "size": 10} // 按category分组,统计前10个分类的数量}}
}'
总结
从近实时检索到分布式架构,从全文检索到聚合分析,Elasticsearch 凭借其灵活、高效、可扩展的特性,成为了处理海量数据的核心工具之一。无论是电商、社交、运维,还是传统行业的数据分析场景,ES 都能帮助企业快速挖掘数据价值,提升业务效率。
当然,ES 并非 “万能工具”—— 它不适合作为事务性数据库(如金融交易数据,需强一致性),也不适合存储超大规模的冷数据(可结合对象存储如 S3 存储冷数据)。但在 “检索与分析” 这一核心场景下,ES 无疑是当前最优秀的解决方案之一。
对于开发者而言,掌握 ES 不仅能提升数据处理能力,更能为业务创新提供技术支撑。未来,随着 ES 不断迭代(如支持向量搜索、更强大的 AI 集成),它在数据领域的应用将更加广泛。如果你还未尝试过 ES,不妨从搭建一个简单的测试环境开始,亲身体验它的强大魅力!
