学好Elasticsearch系列-核心概念
发布人:shili8
发布时间:2025-03-15 20:40
阅读次数:0
**学好Elasticsearch系列-核心概念**
Elasticsearch 是一个开源的、分布式的搜索引擎,能够快速高效地处理海量数据。它是 Elastic Stack 的核心组件之一,其他组件包括 Logstash(日志收集和处理)、Kibana(可视化分析)和 Beats(轻量级数据采集)。在本系列中,我们将重点介绍 Elasticsearch 的核心概念。
###1. 索引(Index)
索引是 Elasticsearch 中最基本的概念。它代表一个集合,包含了多个文档。每个文档都是一个 JSON 对象,描述了一条记录或一项数据。索引可以理解为一个数据库表,文档则是表中的行。
markdown# 索引示例## 创建索引PUT /my_index## 文档示例POST /my_index/_doc{ "name": "John Doe", "age":30, "city": "New York" }
###2. 文档(Document)
文档是 Elasticsearch 中最基本的数据单元。它是一个 JSON 对象,描述了一条记录或一项数据。每个文档都有一个唯一的 ID。
markdown# 文档示例## 创建文档POST /my_index/_doc{ "name": "John Doe", "age":30, "city": "New York" } ## 获取文档GET /my_index/_doc/1
###3. 映射(Mapping)
映射是 Elasticsearch 中用于定义索引结构的配置文件。它指定了索引中每个字段的类型、是否为必填项等信息。
markdown# 映射示例## 创建索引并指定映射PUT /my_index{ "mappings": { "properties": { "name": {"type": "text"}, "age": {"type": "integer"} } } }
###4. 分片(Shard)
分片是 Elasticsearch 中用于水平扩展的概念。它代表一个索引的一部分,包含了多个文档。每个分片都有自己的 ID。
markdown# 分片示例## 创建索引并指定分片数PUT /my_index{ "settings": { "index": { "number_of_shards":3, "number_of_replicas":2 } } }
###5. 复制(Replica)
复制是 Elasticsearch 中用于保证数据可用性的概念。它代表一个索引的副本,包含了相同的文档。
markdown# 复制示例## 创建索引并指定复制数PUT /my_index{ "settings": { "index": { "number_of_shards":3, "number_of_replicas":2 } } }
###6. 查询(Query)
查询是 Elasticsearch 中用于检索数据的语句。它可以指定条件、排序等信息。
markdown# 查询示例## 创建索引并插入文档PUT /my_index/_doc/1{ "name": "John Doe", "age":30, "city": "New York" } ## 使用查询语句检索数据GET /my_index/_search{ "query": { "match": { "name": "John Doe" } } }
###7. 聚合(Aggregation)
聚合是 Elasticsearch 中用于处理和分析数据的功能。它可以指定条件、分组等信息。
markdown# 聚合示例## 创建索引并插入文档PUT /my_index/_doc/1{ "name": "John Doe", "age":30, "city": "New York" } ## 使用聚合语句处理数据GET /my_index/_search{ "aggs": { "avg_age": { "avg": { "field": "age" } } } }
以上就是 Elasticsearch 的核心概念。通过理解这些概念,开发者可以更好地使用 Elasticsearch 来处理和分析数据。