当前位置: 首页 > news >正文

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

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、聚合分析等高级主题。

相关文章:

  • [python]基于yolov8实现热力图可视化支持图像视频和摄像头检测
  • kubernet在prometheus+alertmanager+grafana框架下新增部署loki模块
  • 【进阶】vscode 中使用 cmake 编译调试 C++ 工程
  • uni-app页面怎么设计更美观
  • 快速入手-基于Django-rest-framework的ModelSerializer模型序列化器(三)
  • 基于模糊PID算法的智能洗衣机控制器设计,实现洗衣过程智能化,能够监测衣物重量和污泥,实现洗涤时间、洗衣液投放的智能控制
  • 解析 ID 数组传参的解决方案:基于 Axios 的实现
  • leetcode40-组合总和II
  • Linux下的socket演示程序3(udp)
  • C++调用Openssl 报OPENSSL_Uplink(503EE220,08): no OPENSSL_Applink
  • CentOS 8 Stream 配置在线yum源参考 —— 筑梦之路
  • 力扣DAY30 | 热100 | 两两交换链表中的节点
  • LeetCode hot 100 每日一题(17)——160.相交链表
  • 算法--动态规划
  • 给聊天机器人装“短期记忆“:Flask版实现指南
  • Dubbo(18)Dubbo的SPI机制是什么?
  • Rocky linux部署DNS服务
  • GPU服务器集群网络规划方案
  • 阿里云数据学习20250327
  • 面试八股文--框架篇(SSM)
  • 湖南平台网站建设哪里好/长春网站建设技术托管
  • 河北 政府网站建设管理/给公司做网站要多少钱
  • b2b2c平台网站建设/站长资源平台
  • 平湖网站建设/网络运营怎么学
  • 模板网站区别/seo工程师招聘
  • 建设培训网站建设/上海自媒体推广