【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、聚合分析等高级主题。
相关文章:
【Elasticsearch基础】基本核心概念介绍
Elasticsearch作为当前最流行的分布式搜索和分析引擎,其强大的功能背后是一套精心设计的核心概念体系。本文将深入解析Elasticsearch的五大核心概念,帮助开发者构建坚实的技术基础,并为高效使用ES提供理论支撑。 1 索引(Index&…...
Github 热点项目 awesome-mcp-servers MCP 服务器合集,3分钟实现AI模型自由操控万物!
【今日推荐】超强AI工具库"awesome-mcp-servers"星数破万! ① 百宝箱式服务模块:AI能直接操作浏览器、读文件、连数据库,比如让AI助手自动整理Excel表格,三分钟搞定全天报表; ② 跨领域实战利器:…...
SpringMVC 拦截器(Interceptor)
一.拦截器 假设有这么一个场景,一个系统需要用户登录才能进入,在检验完用户的信息后对页面进行了跳转。但是如果我们直接输入跳转的url,可以绕过用户信息校验(用户登录),直接进入系统。 因此我们引入了使…...
【NLP】16. NLP推理方法重点回顾 -- 52道多选题
Which of the following problems are commonly solved using sequence tagging? A) Named Entity Recognition (NER) B) Part-of-Speech (POS) Tagging C) Word Embedding Training D) Syntactic Dependency Parsing 序列标注是一种 NLP 任务,常用于 命名实体…...
Redisson分布式锁深度解析:原理与实现机制
Redisson作为Redis Java客户端中的分布式解决方案佼佼者,其分布式锁实现被广泛应用于生产环境。以下从底层设计到源码实现进行全面剖析。 一、核心架构设计 1. 整体架构图 graph LRA[客户端] --> B[RLock接口]B --> C[RedissonLock]C --> D[Redis命令执…...
Linux 系统调用实现机制详解
Linux 系统调用实现机制详解 —— fork()、execve()、waitpid() 内核层面的秘密 在 Linux 内核中,fork()、execve() 和 waitpid() 是构建多任务操作系统的三大基石,它们涉及进程控制、内存管理、文件系统等多个子系统。本文将带你一探它们在 内核层面的…...
责任链模式_行为型_GOF23
责任链模式 责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,核心思想是将多个处理请求的对象连成一条链,请求沿链传递直到被处理。它像现实中的“多级审批流程”——请假或报销时,申请会逐级提交给…...
03-SpringBoot3入门-配置文件(自定义配置及读取)
1、自定义配置 # 自定义配置 zbj:user:username: rootpassword: 123456# 自定义集合gfs:- a- b- c2、读取 1)User类 package com.sgu.pojo;import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.spring…...
学习记录-软件测试基础
一、软件测试分类 1.按阶段:单元测试(一般开发自测)、集成测试、系统测试、验收测试 2.按代码可见度测试:黑盒测试、灰盒测试、白盒测试 3.其他:冒烟测试(冒烟测试主要是在开发提测后进行,主要是测试主流…...
【蓝桥杯每日一题】3.28
🏝️专栏: 【蓝桥杯备篇】 🌅主页: f狐o狸x "今天熬的夜,会变成明天奖状的闪光点!" 目录 一、唯一的雪花 题目链接 题目描述 解题思路 解题代码 二、逛画展 题目链接 题目描述 解题思路 解题代…...
优秀的 React 入门开源项目推荐
以下是一些优秀的 React 入门开源项目推荐,涵盖不同应用场景和功能模块,适合学习和实践: 1. Jira Clone 仓库地址:GitHub - oldboyxx/jira_clone 亮点: 基于 React Hooks 实现,模仿 Jira 的任务管理功能。…...
万字长文详解Text-to-SQL
什么是Text-to-SQL 在各个企业数据量暴涨的现在,Text-to-SQL越来越重要了,所以今天就来聊聊Text-to-SQL。 Text-to-SQL是一种将自然语言查询转换为数据库查询的技术。它可以让用户通过自然语言来查询数据库,而不需要编写复杂的SQL语句。 T…...
【Linux】动静态库的制作与使用
一.对软硬链接的补充 1、无法对目录进行硬链接 为什么呢? 首先,我们在访问文件时,每一个文件都会有自己的dentry结构,这些结构会在内存中维护一棵路径树,来快速进行路径查找。但是如果某个节点直接使用硬链接到了根节…...
ubuntu22.04 如何安装 ch341 驱动
前言 本篇是介绍ubuntu22.04如何安装 ch341 驱动,并对其中遇到的问题进行整理。 一、流程 1.1 查看CH340驱动 首先是查看ubuntu22.04系统自带的驱动,用以下命令即可 ls /lib/modules/$(uname -r)/kernel/drivers/usb/serial 然后会跳出以下界面&…...
个人博客网站从搭建到上线教程
步骤1:设计个人网站 设计个人博客网站的风格样式,可以在各个模板网站上多浏览浏览,以便有更多设计网站风格样式的经验。 设计个人博客网站的内容,你希望你的网站包含哪些内容如你的个人基本信息介绍、你想分享的项目、你想分享的技术文档等等。 步骤2:选择开发技术栈 因…...
android 一步完成 aab 安装到手机
家人们谁懂!在 Android 系统安装 aab 应用超麻烦。满心期待快速体验,却发现 aab 无法直装,得先转为 apks 格式,这过程复杂易错。好不容易转好,还得安装 apks,一番折腾,时间与耐心全耗尽。别愁&a…...
c#使用forms实现屏幕截图
说明: c#使用forms实现屏幕截图 step1: 点击按钮,拖拽,截图,保存本地 C:\Users\wangrusheng\RiderProjects\WinFormsApp1\WinFormsApp1\Form1.cs using System; using System.Drawing; using System.Drawing.Imaging; using Syst…...
mac m4 Homebrew安装MySQL 8.0
1.使用Homebrew安装MySQL8 在终端中输入以下命令来安装MySQL8: brew install mysql8.0 安装完成后,您可以通过以下命令来验证MySQL是否已成功安装: 2.配置mysql环境变量 find / -name mysql 2>/dev/null #找到mysql的安装位置 cd /op…...
UE5学习笔记 FPS游戏制作26 UE中的UI
文章目录 几个概念创建一个UI蓝图添加UI获取UI的引用 切换设计器和UI蓝图将UI添加到游戏场景锚点轴点slotSizeToContent三种UI数据更新方式(Text、Image)函数绑定属性绑定事件绑定 九宫格分割图片按钮设置图片绑定按下事件 下拉框创建添加数据修改样式常用函数 滚动框创建添加数…...
Navicat导出mysql数据库表结构说明到excel、word,单表导出方式记录
目前只找到一张一张表导出的方式 使用information_schema传入表名查询 字段名根据需要自行删减,一般保留序号、字段名、类型、说明就行 SELECT COLUMNS.ORDINAL_POSITION AS 序号, COLUMNS.COLUMN_NAME AS 字段名, COLUMNS.COLUMN_TYPE AS 类型(长度), COLUMNS.N…...
目标检测 AP 计算 实例 python
以下是使用 Python 实现目标检测中 Average Precision (AP) 计算的完整实例,包含代码和注释。这里以 Pascal VOC 标准 为例(IoU阈值0.5)。 步骤1:准备数据 假设: gt_boxes: 真实标注框列表,格式为 …...
HarmonyOS NEXT图形渲染体系:重新定义移动端视觉体验
一、革命性架构设计 1.1 多线程并行渲染引擎 HarmonyOS NEXT通过四级流水线并行架构实现渲染效率质的飞跃,其核心包含: 优先级任务调度器:动态分配紧急渲染任务(如手势反馈)与常规任务智能线程池管理:根…...
使用 Docker 18 安装 Eureka:解决新版本 Docker 不支持的问题
使用 Docker 18 安装 Eureka:解决新版本 Docker 不支持的问题 在微服务架构中,Eureka 是一个常用的注册中心,用于服务发现和管理。然而,随着 Docker 版本的更新,一些新版本的 Docker 对 Eureka 的支持并不友好。如果你…...
Linux驱动开发 中断处理
目录 序言 1.中断的概念 2.如何使用中断 中断处理流程 中断上下文限制 屏蔽中断/使能 关键区别与选择 上半部中断 下半部中断 软中断(SoftIRQ) 小任务(Tasklet) 工作队列(Workqueue) 线程 IRQ(Threaded IRQ…...
Centos主机检查脚本
使用方法: 将脚本保存为 CentOS_syscheck.sh 添加执行权限: chmod x CentOS_syscheck.sh 执行脚本: ./CentOS_syscheck.sh #!/bin/bash# 设置颜色变量 RED\033[0;31m GREEN\033[0;32m YELLOW\033[0;33m BLUE\033[0;34m NC\033[0m # 重置…...
python系统之综合案例:用python打造智能诗词生成助手
不为失败找理由,只为成功找方法。所有的不甘,因为还心存梦想,所以在你放弃之前,好好拼一把,只怕心老,不怕路长。 python系列之综合案例 前言一、项目描述二、项目需求三、 项目实现1、开发准备2、代码实现 …...
【微服务】SpringBoot整合LangChain4j 操作AI大模型实战详解
目录 一、前言 二、Langchain4j概述 2.1 Langchain4j 介绍 2.1.1 Langchain4j 是什么 2.1.2 主要特点 2.2 Langchain4j 核心组件介绍 2.3 Langchain4j 核心优势 2.4 Langchain4j 核心应用场景 三、SpringBoot 整合 LangChain4j 组件使用 3.1 前置准备 3.1.1 获取apik…...
DeepSeek:巧用前沿AI技术,开启智能未来新篇章
引言 近年来,人工智能(AI)技术迅猛发展,大模型成为全球科技竞争的核心赛道。在这场AI革命中,DeepSeek作为中国领先的大模型研发团队,凭借其创新的技术架构、高效的训练方法和广泛的应用场景,迅…...
23种设计模式-结构型模式-桥接器
文章目录 简介问题解决方案示例总结 简介 桥接器是一种结构型设计模式,可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构,从而能在开发时分别使用。 问题 假如你有一个几何形状Shape类,它有两个子类:圆形C…...
K8S学习之基础五十八:部署nexus服务
部署nexus服务 Nexus服务器是一个代码包管理的服务器,可以理解 Nexus 服务器是一个巨大的 Library 仓库。Nexus 可以支持管理的工具包括 Maven , npm 等,对于 JAVA 开发来说,只要用到 Maven 管理就可以了。Nexus服务器作用&#x…...
