ElasticSearch8 - 基础概念和映射

这篇具有很好参考价值的文章主要介绍了ElasticSearch8 - 基础概念和映射。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

写这篇东西,是因为官方文档看着太痛苦,于是乎想用大白话来聊聊 ElasticSearc (下面都简称ES)。所以下文对于 ES 一些概念的表述可能会与官方有出入,所以需要准确的表述和详细定义的,请跳转官方文档。我也尽量贴上官方的链接。

前置知识:因为下文会使用 mysql 的一些概念来描述,所以没学过的不建议看文本。

本文基于 ES 8.12

ES 基础概念

ES 是一个搜索引擎。重点是大数据搜索,如果是传统的 CRUD,请考虑关系型数据库。

下面来了解几个 ES 的基础概念

索引(index)

Index modules | Elasticsearch Guide [8.12] | Elastic

类比 mysql 的表,但又与表有很大区别

mysql:创建表需要先定义表字段,再进行数据插入。并且如果添加新字段,需要先修改表结构,再进行数据插入。

ES:索引无需预先定义字段(ES 里面叫映射),可在插入数据时动态添加字段(这叫动态映射,后面讲)

文档类型(type)

ES7 开始,文档类型只有默认的 _doc 了,我没用过旧版,所以略...

文档(document)

类比 mysql 的表的一条数据。

映射(mapping)

Mapping | Elasticsearch Guide [8.12] | Elastic

类比 mysql 的表字段,不同类型的字段,存储和查找会有区别

查看索引的映射

-- 查看映射(索引名为 my-index 的映射)
GET /my-index/_mappings
-- 查看映射的某个字段(索引名为 my-index 的字段 age 的映射)
GET /my-index/_mapping/field/age

动态映射

Dynamic field mapping | Elasticsearch Guide [8.12] | Elastic

ES 与传统关系型数据库不同,创建索引(类比 mysql 的表)时,不需要指定字段,在插入数据时,会自动创建字段和判断字段的类型,这就是动态映射。

动态映射默认的开启的,可以通过 dynamic 参数来修改。dynamic | Elasticsearch Guide [8.12] | Elastic

以下是不同 dynamic 参数对 json 数据类型的映射

JSON 数据类型 dynamic: true dynamic: runtime
null No field added No field added
true or false boolean boolean
double float float
long long long
object object No field added
array 取决于数组中的第一个非 null 值 取决于数组中的第一个非 null 值
日期类型的 string date date
数字类型的 string float or long double or long
其他类型的 string text with a .keyword sub-field keyword

注意:默认的数字检测是关闭的,也就是在 没有映射 的情况下,插入 666 字符串是识别的成字符串的。如果已经配置了映射字段是 long 类型,插入 666 字符串才会被识别为数字

日期检测:
默认的日期检测格式有 yyyy/MM/dd HH:mm:ss||yyyy/MM/dd
也就是 2024/01/01 12:00:00 或者 2024/01/01 ,但是 2024-01-01 格式也行, 2024-01-01 12:00:00 不可以

自定义日期检测

PUT my-index
{
  "mappings": {
    "dynamic_date_formats": [ "yyyy/MM", "MM/dd/yyyy"]
    // 或者用
    "dynamic_date_formats": [ "yyyy/MM|MM/dd/yyyy"]
  }
}

两者的区别在于,[ "yyyy/MM", "MM/dd/yyyy"] 第一次插入数据,匹配到哪种,以后都用这种检测。而 [ "yyyy/MM|MM/dd/yyyy"] 则是两种格式都能用

显式映射

创建索引时添加映射

不需要搜索的字段,建议用 index: false 属性
index | Elasticsearch Guide [8.12] | Elastic

PUT /my-index
{
  "mappings": {
    "properties": {
      "age":    { "type": "integer" },  
      "email":  { "type": "keyword" , "index": false }, 
      "name":   { "type": "text"  }     
    }
  }
}

向现有映射添加字段

PUT /my-index/_mapping
{
  "properties": {
    "employee-id": {
      "type": "keyword",
      "index": false
    }
  }
}

修改现有映射

除了支持的映射参数外,您不能更改现有字段的映射或字段类型。更改现有字段可能会使已索引的数据无效。

如果需要更改字段的映射,请使用正确的映射创建一个新索引,并将数据重新索引到该索引中。

说人话就是:ES 是用来搜索的,官方不建议修改字段映射。不比关系数据库,ES 更改字段的映射很麻烦,跟重新建一个索引把数据导进去差不多(官方也建议这么玩)

总结

本文用大白话讲了 ES 的几个基本概念和映射的操作,旨在让小白能快速了解 ES,如果文章有错误的地方,欢迎评论区指出。

参考资料

Elasticsearch Mapping类型修改 - 知乎 (zhihu.com)文章来源地址https://www.toymoban.com/news/detail-843201.html

到了这里,关于ElasticSearch8 - 基础概念和映射的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ElasticSearch基础篇-条件查询与映射

    条件查询 q:代表查询条件 响应结果 🔖 由于在域名后面添加查询条件不是很方便,所以我们一般使用json格式发送查询条件 匹配查询 query:代表查询条件 match:匹配查询 全量查询 match_all:匹配所有 分页查询 from:起始位置 (页码-1)*每页数据条数 size: 分页大小 字段过滤 _source:设置

    2024年02月14日
    浏览(46)
  • Elasticsearch基础篇(六):es映射和常用的字段类型

    官方地址:Mapping 在 Elasticsearch 中,映射是索引的关键组成部分,它定义了文档的结构和字段。每个文档都包含一个或多个字段,而映射定义了这些字段的数据类型、如何分析文本、字段是否可搜索等信息。 映射的主要作用包括: 定义字段类型 :你可以指定字段是文本、数

    2024年02月04日
    浏览(88)
  • Elasticsearch8 - Docker安装Elasticsearch8.12.2

    最近在学习 ES,所以需要在服务器上装一个单节点的 ES 服务器环境:centos 7.9 目前最新版本是 8.12.2 新增配置文件 elasticsearch.yml 解释一下,前三行是开启远程访问和跨域,最后一行是开启密码访问 Networking | Elasticsearch Guide [8.12] | Elastic 在宿主机创建容器的挂载目录,我的目录

    2024年04月15日
    浏览(53)
  • 【Elasticsearch】基础概念(一)

    简介:Elasticsearch(ES)是一个开源的分布式搜索和分析引擎,用于快速存储、搜索和分析大量数据。它具有高性能、可扩展性和灵活性的特点,被广泛用于构建实时搜索、日志分析、数据可视化等应用。 本人主要介绍Elasticsearch(ES)的部署方式和基础概念知识,使用docker c

    2024年02月07日
    浏览(33)
  • ElasticSearch第二讲:ES详解 - ElasticSearch基础概念

    在学习ElasticSearch之前,先简单了解下ES流行度,使用背景,以及相关概念等。本文是ElasticSearch第二讲,ElasticSearch的基础概念。 根据DB Engine的排名显示,ElasticSearch是最受欢迎的企业级搜索引擎。 下图红色勾选的是我们前面的系列详解的,除此之外你可以看到搜索库ElasticSea

    2024年02月09日
    浏览(51)
  • ElasticSearch 7.4学习记录(基础概念和基础操作)

    若你之前从未了解过ES,本文将由浅入深的一步步带你理解ES,简单使用ES。作者本人就是此状态,通过学习和梳理,产出本文,已对ES有个全面的了解和想法,不仅将知识点梳理,也涉及到自己的理解,初次学习踩的坑都汇总如下。 对于第一次接触ES的读者,该章节将直观的

    2024年02月12日
    浏览(35)
  • Elasticsearch的基础概念和配置实战

    作者:禅与计算机程序设计艺术 Elasticsearch是一个开源分布式搜索及分析引擎,主要面向云计算环境和实时应用场景。在互联网行业中扮演着越来越重要的角色,从而影响到各个领域,包括IT、电子商务、金融、搜索等。 本文将以实战的方式,带领读者了解Elastic Stack(Elastics

    2024年02月08日
    浏览(30)
  • Docker安装ElasticSearch8.X docker安装elasticsearch8.X完整详细教程

    Docker常用命令大全 Docker ElasticSearch 官方仓库 Docker 生产环境安装Elasticsearch教程 我这边选择的版本是 docker pull elasticsearch:8.8.1 在终端中执行以下命令以拉取 docker pull elasticsearch:8.8.1 根据自己使用过的版本: 使用以下命令创建一个新的 elasticsearch 容器并将其启动: --name 是 容器

    2024年02月15日
    浏览(45)
  • ElasticSearch8 - SpringBoot整合ElasticSearch

    springboot 整合 ES 有两种方案,ES 官方提供的 Elasticsearch Java API Client 和 spring 提供的 [Spring Data Elasticsearch](Spring Data Elasticsearch) 两种方案各有优劣 Spring:高度封装,用着舒服。缺点是更新不及时,有可能无法使用 ES 的新 API ES 官方:更新及时,灵活,缺点是太灵活了,基本是一

    2024年03月25日
    浏览(97)
  • 【ES】Elasticsearch核心基础概念:文档与索引

    es的核心概念主要是:index(索引)、Document(文档)、Clusters(集群)、Node(节点)与实例,下面我们先来了解一下Document与Index。 在讲解Document与Index概念之前,我们先来了解一下RESTful APIs,因为下面讲解Document和Index的时候会使用到。 当我们把es服务器启动起来之后,要怎么调用呢?

    2024年02月05日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包