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

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

目录

    • 核心概念
      • 概念总结
    • 常见操作
      • 索引的常见操作
      • 常见的数据类型
      • 指定索引库字段类型`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>/_mappingGET /my_index/_mapping

最高频使用的数据类型

  • text字段类型

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

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

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

相关文章:

  • 比较两个用于手写体识别的卷积神经网络(CNN)模型
  • PostgreSQL基本用法
  • 谷歌 NotebookLM 即将推出 Sparks 视频概览:Gemini 与 Deep Research 加持,可生成 1 - 3 分钟 AI 视频
  • 前缀和——和为K的子数组
  • 光纤克尔非线性效应及其在光通信系统中的补偿教程-3.2 克尔效应
  • 分布式与集群:概念、区别与协同
  • 没有 Mac,我如何用 Appuploader 完成 iOS App 上架
  • RabbitMQ的简介
  • React集成百度【JSAPI Three】教程(002):设置不同的环境效果
  • 数据结构(二) 线性表
  • java中的Servlet4.x详解
  • 湖北理元理律师事务所观察:债务服务中的“倾听者价值”
  • 深入解析Spring Boot与Kafka集成:构建高效消息驱动微服务
  • APP小程序抓包和下游代理
  • 云原生攻防2(Docker基础补充)
  • 2.微服务-配置
  • Fines for Parking vs. Free News
  • 云计算与大数据进阶 | 26、解锁云架构核心:深度解析可扩展数据库的5大策略与挑战(下)
  • Kotlin 协程
  • MySQL故障排查
  • 高效掌握二分查找:从基础到进阶
  • LED太阳光模拟器与氙灯太阳光模拟器的性能区别
  • Protobuf协议生成和使用
  • 5G金融互联:迈向未来金融服务的极速与智能新时代
  • 判断三方库是64位还是32位
  • CVE-2015-3934 Fiyo CMS SQL注入
  • 代码随想录算法训练营Day37 | 完全背包基础理论 518. 零钱兑换II 377. 组合总和Ⅳ 57. 爬楼梯(第八期模拟笔试)
  • 网络协议之一根网线就能连接两台电脑?
  • Spring boot 学习笔记2
  • 易境通海外仓系统:一件代发全场景数字化解决方案