ElasticSearch 8.x 快速上手并了解核心概念

news2025/5/23 13:55:44

目录

    • 核心概念
      • 概念总结
    • 常见操作
      • 索引的常见操作
      • 常见的数据类型
      • 指定索引库字段类型`mapping`
      • 查看索引库的字段类型
      • 最高频使用的数据类型

核心概念

  • 在新版Elasticsearch中,文档document就是一行记录(json),而这些记录存在于索引库(index)中, 索引名称必须是小写
  • 与关系型数据库对比
MysqlElastic Search
Table(水平分表)Index(不同分片)
RowDocument
ColumnField
  • index(索引)
    • 在新版本中的Elasticsearh中,索引的概念等同于Mysql中表的概念,Elasticsearch中的索引可以直接存储数据
  • document(文档)
    • 真正的数据,存储一条数据就是一份文档,存储格式为JOSN,等同于mysql中的一条数据
  • shards(分片)
    • 数据量特大,没有足够大的硬盘空间来一次性存储,且一次性搜索那么多的数据,响应跟不上
    • ES提供把数据进行分片存储,这样方便进行拓展和提高吞吐
  • replicas(副本)
    • 分片的拷贝,当主分片不可用的时候,副本就充当主分片进行使用
    • 索引分片的备份,shardreplica一般存储在不同的节点上,用来提高可靠性
    • 案例
      • 假如Elasticsearch中的每个索引分配5个主分片和1个副本
      • 如果集群中至少有两个节点,索引将会有5个主分片和另外5个复制分片(1个完全拷贝)这样每个索引总共有10个分片

概念总结

  • 数据切分为多个分片是为了提高可处理数据的容量和方便后续水平扩展
  • 分片做副本是为了提高集群的稳定性,提高容灾特性和吞吐量
  • 副本越多 数据越高可用,但是消耗的资源就越多
  • 分片越多数据就会越分散,避免数据过于集中导致某个节点压力过大
  • 副本和分片的数量不一定是越多越好
    • 过多的分片,会占用大量的CPU以及内存等资源
    • 过多的副本,副本之间数据同步的会占用大量网络资源等
  • ES默认为一个索引创建1个主分片和1个副本,在创建索引的时候使用settings属性指定,每个分片必须有零到多个副本
  • 注意:索引一旦创建成功,主分片primary shard数量不可以变(只能重建索引),副本分片replica shard可以改变

常见操作

索引的常见操作

  • 查看索引列表
GET /_cat/indices?v=true&pretty
  • 查看分片情况
GET /_cat/shards?v=true&pretty
  • 创建索引(Create Index)
PUT /<index_name>
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1
  }
}
  • 查看索引是否存在( 结果是200 和 404)
HEAD /<index_name>
  • 获取索引(Get Index)
GET /<index_name>
  • 更新索引设置(Update Index Settings)
PUT /<index_name>/_settings
{
  "settings": {
    "number_of_replicas": 2
  }
}
  • 删除索引(Delete Index)
DELETE /<index_name>

常见的数据类型

  • Text类型:用于全文本搜索的文本类型
  • Keyword类型:用于精确匹配和聚合操作的关键字类型
  • Numeric类型:包括整数类型(long、integer、short、byte)和浮点数类型(double、float)
  • Date类型:用于存储日期和时间的类型
  • Boolean类型:用于存储布尔值(true或false)的类型
  • Binary类型:用于存储二进制数据的类型
  • Array类型:用于存储数组或列表数据的类型
  • Object类型:用于存储复杂结构数据的类型

指定索引库字段类型mapping

PUT /my_index
{
  "mappings": {
    "properties": {
      "id": {
        "type": "keyword"
      },
      "title": {
        "type": "text"
      },
      "price": {
        "type": "float"
      }
    }
  }
}

查看索引库的字段类型

GET /<index_name>/_mapping

GET /my_index/_mapping

最高频使用的数据类型

  • text字段类型

    • text类型主要用于全文本搜索,适合存储需要进行全文本分词的文本内容,如文章、新闻等
    • text字段会对文本内容进行分词处理,将文本拆分成独立的词项(tokens)进行索引
    • 分词的结果会建立倒排索引,使搜索更加灵活和高效
    • text字段在搜索时会根据分词结果进行匹配,并计算相关性得分,以便返回最佳匹配的结果
  • keyword字段类型

    • keyword类型主要用于精确匹配和聚合操作,适合存储不需要分词的精确值,如ID、标签、关键字等
    • keyword字段不会进行分词处理,而是将整个字段作为一个整体进行索引和搜索
    • 这使得搜索只能从精确的值进行匹配,而不能根据词项对内容进行模糊检索
    • keyword字段适合用于过滤和精确匹配,同时可以进行快速的基于精确值的聚合操作
  • 类型选择

    • 在选择text字段类型和keyword字段类型时,需要根据具体的需求进行权衡和选择
    • 如果需要进行全文本检索,并且希望根据分词结果计算相关性得分,以获得最佳的匹配结果,则选择text字段类型
    • 如果需要进行精确匹配、排序或聚合操作,并且不需要对内容进行分词,则选择keyword字段类型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2383933.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

04-Web后端基础(基础知识)

而像HTML、CSS、JS 以及图片、音频、视频等这些资源&#xff0c;我们都称为静态资源。 所谓静态资源&#xff0c;就是指在服务器上存储的不会改变的数据&#xff0c;通常不会根据用户的请求而变化。 那与静态资源对应的还有一类资源&#xff0c;就是动态资源。那所谓动态资源&…

Spring Cloud生态与技术选型指南:如何构建高可用的微服务系统?

引言&#xff1a;为什么选择Spring Cloud&#xff1f; 作为全球开发者首选的微服务框架&#xff0c;Spring Cloud凭借其开箱即用的组件、与Spring Boot的无缝集成&#xff0c;以及活跃的社区生态&#xff0c;成为企业级微服务架构的基石。但在实际项目中&#xff0c;如何从众多…

手写简单的tomcat

首先&#xff0c;Tomcat是一个软件&#xff0c;所有的项目都能在Tomcat上加载运行&#xff0c;Tomcat最核心的就是Servlet集合&#xff0c;本身就是HashMap。Tomcat需要支持Servlet&#xff0c;所以有servlet底层的资源&#xff1a;HttpServlet抽象类、HttpRequest和HttpRespon…

高等数学-积分

一、不定积分 定理&#xff1a;如果函数f(x)在区间I上连续&#xff0c;那么f(x)在区间I上一定有原函数&#xff0c;即一定存在区间I上的可导函数F(x)&#xff0c;使得F(x)f(x) &#xff0c;x∈I 简单地说&#xff1a;连续函数必有原函数。 极限lim*0->x {[∫*0^x sin(t^2)…

IOS平台Unity3D AOT全局模块结构分析

分析背景 由于IOS平台中不允许执行动态代码&#xff0c;Unity 4.6之前的版本在IOS平台中采用了AOT的处理方式&#xff0c;提前将C#代码静态编译为机器识别的二进制机器码。Unity引擎4.6之前的版本中IOS框架采用了Mono的AOT机制实现静态编译和处理&#xff0c;本文针对全局AOT模…

CyberSecAsia专访CertiK首席安全官:区块链行业亟需“安全优先”开发范式

近日&#xff0c;权威网络安全媒体CyberSecAsia发布了对CertiK首席安全官Wang Tielei博士的专访&#xff0c;双方围绕企业在进军区块链领域时所面临的关键安全风险与防御策略展开深入探讨。 Wang博士在采访中指出&#xff0c;跨链桥攻击、智能合约漏洞以及私钥管理不当&#x…

文件操作和IO-3 文件内容的读写

文件内容的读写——数据流 流是操作系统提供的概念&#xff0c;Java对操作系统的流进行了封装。 数据流就像水流&#xff0c;生生不息&#xff0c;绵延不断。 水流的特点&#xff1a;比如要100mL的水&#xff0c;可以一次接10mL&#xff0c;分10次接完&#xff0c;也可以一次接…

SpringAI 大模型应用开发篇-SpringAI 项目的新手入门知识

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 1.0 SpringAI 概述 目前大模型应用开发最常见的框架就是 LangChain&#xff0c;然而 LangChain 是基于 Python 语言&#xff0c;虽然有 LangChain4j&#xff0c;但是对于大量使…

编程速递-RAD Studio 12.3 Athens五月补丁:May Patch Available

编程速递-RAD Studio 12.3 Athens四月补丁&#xff1a;关注软件性能的开发者&#xff0c;安装此补丁十分必要 今天 &#xff08;2025 年 5 月 19 日&#xff09;Embarcadero 发布了 RAD Studio、Delphi 和 CBuilder 12.3 Athens&#xff08;雅典&#xff09;的第二个补丁。 RA…

Matlab学习合集

1.变量 2.常见的数学函数 3. 向量 向量的创建&#xff1a; 直接创建&#xff1a;针对于数量少的情况 冒号法 函数创建&#xff1a;

基于labview的声音采集与存储分析系统

基于LabVIEW的声音信号采集与存储分析系统开发实战&#xff1a;从原理到代码实现 &#xff08;内含源码&#xff09;基于labview的声音采集与处理系统 点击跳转工坊 点击跳转视频 引言 在音频技术与工业监测领域&#xff0c;声音信号的实时采集与分析是一项基础且关键的任务。…

【项目记录】部门增删改及日志技术

1 删除部门 1.1 需求 删除部门数据。在点击 "删除" 按钮&#xff0c;会根据ID删除部门数据。 了解了需求之后&#xff0c;我们再看看接口文档中&#xff0c;关于删除部门的接口的描述&#xff0c;然后根据接口文档进行服务端接口的开发。 1.2 接口描述 1.2.1 基…

TDengine 更多安全策略

简介 上一节我们介绍了 TDengine 安全部署配置建议&#xff0c;除了传统的这些配置外&#xff0c;TDengine 还有其他的安全策略&#xff0c;例如 IP 白名单、审计日志、数据加密等&#xff0c;这些都是 TDengine Enterprise 特有功能&#xff0c;其中白名单功能在 3.2.0.0 版本…

电子制造企业智能制造升级:MES系统应用深度解析

在全球电子信息产业深度变革的2025年&#xff0c;我国电子信息制造业正经历着增长与转型的双重考验。据权威数据显示&#xff0c;2025年一季度行业增加值同比增长11.5%&#xff0c;但智能手机等消费电子产量同比下降1.1%&#xff0c;市场竞争白热化趋势显著。叠加关税政策调整、…

Java使用Collections集合工具类

1、Collections 集合工具类 Java 中的 Collections 是一个非常有用的工具类&#xff0c;它提供了许多静态方法来操作或返回集合。这个类位于 java.util 包中&#xff0c;主要包含对集合进行操作的方法&#xff0c;比如排序、搜索、线程安全化等。 Java集合工具类的使用&#x…

python打卡day33

知识点回顾&#xff1a; PyTorch和cuda的安装查看显卡信息的命令行命令&#xff08;cmd中使用&#xff09;cuda的检查简单神经网络的流程 数据预处理&#xff08;归一化、转换成张量&#xff09;模型的定义 继承nn.Module类定义每一个层定义前向传播流程 定义损失函数和优化器定…

同城上门预约服务系统案例分享,上门服务到家系统都有什么功能?这个功能,很重要!

你以为上门按摩这类平台只要做好接单派单就万事大吉了&#xff1f;大错特错&#xff01;市面上90%的系统只会吹嘘基础功能&#xff0c;却对最关键的财税问题避而不谈。很多创业者直到被税务稽查才发现&#xff0c;自己每年都在白白多交几倍的冤枉税&#xff01;举个例子&#x…

用 UniApp 开发 TilePuzzle:一个由 CodeBuddy 主动驱动的拼图小游戏

我正在参加CodeBuddy「首席试玩官」内容创作大赛&#xff0c;本文所使用的 CodeBuddy 免费下载链接&#xff1a;腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 起心动念&#xff1a;从一个小游戏想法开始 最近在使用 UniApp 做练手项目的时候&#xff0c;我萌生了一个小小…

HJ101 输入整型数组和排序标识【牛客网】

文章目录 零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码 零、原题链接 HJ101 输入整型数组和排序标识 一、题目描述 二、测试用例 三、解题思路 基本思路&#xff1a;   选择一个排序算法&#xff0c;然后根据标识确定升序还是降序&#xff1b;具体思路&a…

在Linux debian12系统上使用go语言以及excelize库处理excel数据

go-do-excel 一、介绍 myBook.xlsx表中,B列是“全部IP地址“,A列是“分发成功的IP地址“,本脚本采用go语言编写,通过读取myBook.xlsx中B列“全部IP地址“和A列“分发成功的IP地址“数据,计算出“分发失败的IP地址“数据,将其写入到C列。 二、编程语言 本脚本在Linux De…