【Elasticsearch基础】基本核心概念介绍

发布于:2025-03-30 ⋅ 阅读:(36) ⋅ 点赞:(0)

Elasticsearch作为当前最流行的分布式搜索和分析引擎,其强大的功能背后是一套精心设计的核心概念体系。本文将深入解析Elasticsearch的五大核心概念,帮助开发者构建坚实的技术基础,并为高效使用ES提供理论支撑。

1 索引(Index)与文档(Document)

1.1 索引:数据的逻辑容器

在Elasticsearch中,索引(Index)*是最高层次的数据组织单位,相当于传统数据库中的"数据库"概念。但与传统数据库不同,ES索引具有以下特点:
  • 动态模式:字段类型可以在写入时自动识别(可通过映射关闭)
  • 分布式存储:数据自动分布在集群的多个节点上
  • 优化设计:专为搜索性能优化的数据结构
// 创建索引示例
PUT /test
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 1
  }
}
// 查看索引 
GET /test

1.2 文档:数据的基本单元

文档(Document):是ES中可被索引的最小数据单元,采用JSON格式表示:
  • 每个文档有唯一ID(可自动生成)
  • 文档包含多个字段(Field)
  • 文档元数据包括:_index, _type, _id, _version等
// 插入文档
POST /test/_doc/01
{
  "name": "智能手机",
  "price": 3999,
  "description": "旗舰级配置",
  "tags": ["电子","数码"]
}
// 查看文档 
GET /test/_doc/01
索引与传统数据库对比:

概念

Elasticsearch

传统RDBMS

数据容器

索引(Index)

数据库(Database)

数据记录

文档(Document)

行(Row)

数据模式

映射(Mapping)

表结构(Schema)

2 分片(Shard)与副本(Replica)

2.1 分片:分布式存储的基础

分片(Shard):是Elasticsearch实现分布式特性的核心机制:
  • 横向扩展:索引被分成多个分片,分散在不同节点
  • 容量限制:单个分片推荐不超过50GB数据(实际取决于硬件)
  • 主分片(Primary):负责处理索引和搜索请求
  • 不可变性:分片数量在创建索引后不可更改
// 创建带分片的索引
PUT /testindex
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 1
  }
}
// 查看索引分片 
GET _cat/shards/testindex?v

2.2 副本:高可用的保障

副本(Replica):是分片的拷贝,主要具备如下特性
  • 数据冗余:防止硬件故障导致数据丢失
  • 读取扩展:搜索请求可以在所有副本上并行执行
  • 故障转移:当主分片不可用时,副本可提升为主分片
// 查看分片分配情况 
GET /_cat/shards/test?v

分片策略最佳实践
  • 根据数据量预估总分片数(每分片30-50GB)
  • 生产环境至少1个副本
  • 分片数应与集群节点数协调(避免分配不均)

3 映射(Mapping)与字段类型

3.1 映射:数据结构的定义

映射(Mapping):定义了文档及其字段的存储和索引方式
  • 字段数据类型:text, keyword, date, long等
  • 索引控制:是否可搜索、是否存储原始值
  • 分析器指定:如何处理文本内容
// 基础文本映射
PUT /test3
{
  "mappings": {
    "properties": {
      "title": { "type": "text" }, 
      "views": { "type": "integer" },
      "publish_date": { "type": "date" }
    }
  }
}

3.2 核心字段类型详解

3.2.1 Text vs Keyword

  • Text:用于全文搜索,会被分词
  • Keyword:用于精确匹配,如过滤、聚合

3.2.2 特殊类型

  • Geo_point:经纬度坐标
  • Nested:嵌套对象(保持数组元素间关系)
  • Join:定义父子文档关系

3.2.3 多字段(Multi-fields)

  • 允许一个字段以不同方式索引
"product_id": {
  "type": "keyword",
  "fields": {
    "analyzed": { "type": "text" }
  }
}

4 总结

深入理解Elasticsearch这些基础核心概念,是构建高效搜索解决方案的基础。在实际应用中,需要根据具体业务场景灵活组合这些特性。后续我们将深入探讨查询DSL、聚合分析等高级主题。