Es之mapping

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: Es之mapping

1)、字段类型

4c7855139fd741daaada52ded2473f6f.png

7b229ccab66f4a9dbaa929e72e72966f.png

8f61f5e3c1e04970a7e0af6365a6647f.png


2)、映射


Mapping(映射)

Mapping 是用来定义一个文档(document),以及它所包含的属性(field)是如何存储和 索引的。比如,使用 mapping 来定义:


 哪些字符串属性应该被看做全文本属性(full text fields)。


 哪些属性包含数字,日期或者地理位置。


 文档中的所有属性是否都能被索引(_all 配置)。


 日期的格式。


 自定义映射规则来执行动态添加属性。


使用动态映射和显式映射来定义数据。每种方法 根据您在数据之旅中所处的阶段提供不同的优势。为 例如,显式映射不想使用默认值的字段,或者 获得对创建哪些字段的更大控制。然后您可以允许Elasticsearch 动态添加其他字段。


查看 mapping 信息

GET bank/_mapping

自动猜测的映射类型


6adac56c2e3a4583ac90e3d06723a378.png

3)、新版本改变


Es7 及以上移除了 type 的概念。

 关系型数据库中两个数据表示是独立的,即使他们里面有相同名称的列也不影响使用, 但 ES 中不是这样的。elasticsearch 是基于 Lucene 开发的搜索引擎,而 ES 中不同 type下名称相同的 filed 最终在 Lucene 中的处理方式是一样的。


 两个不同 type 下的两个 user_name,在 ES 同一个索引下其实被认为是同一个 filed, 你必须在两个不同的 type 中定义相同的 filed 映射。否则,不同 type 中的相同字段 名称就会在处理中出现冲突的情况,导致 Lucene 处理效率下降。


 去掉 type 就是为了提高 ES 处理数据的效率。


Elasticsearch 7.x


 URL 中的 type 参数为可选。比如,索引一个文档不再要求提供文档类型。


Elasticsearch 8.x


 不再支持 URL 中的 type 参数。 解决:


1)、将索引从多类型迁移到单类型,每种类型文档一个独立索引


2)、将已存在的索引下的类型数据,全部迁移到指定位置即可。详见数据迁移


1、创建映射

PUT /my_index
{
  "mappings": {
    "properties": {
      "age":{"type": "text"},
      "email":{"type": "keyword"},
      "name":{"type": "text"}
    }
  }
}
{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "my_index"
}

2、添加新的字段映射

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

3、更新映射

对于已经存在的映射字段,我们不能更新。更新必须创建新的索引进行数据迁移

所以以下操作会报错!

PUT /my_index
{
  "mappings": {
    "properties": {
      "age":{"type": "text"},
      "email":{"type": "keyword"},
      "name":{"type": "text"},
      "employee_id":{"type": "long"}
    }
  }
}
{
  "error": {
    "root_cause": [
      {
        "type": "resource_already_exists_exception",
        "reason": "index [my_index/mLCXjYGEQyWwh5uexTlQ4w] already exists",
        "index_uuid": "mLCXjYGEQyWwh5uexTlQ4w",
        "index": "my_index"
      }
    ],
    "type": "resource_already_exists_exception",
    "reason": "index [my_index/mLCXjYGEQyWwh5uexTlQ4w] already exists",
    "index_uuid": "mLCXjYGEQyWwh5uexTlQ4w",
    "index": "my_index"
  },
  "status": 400
}

4、数据迁移

先创建出 new_twitter 的正确映射。然后使用如下方式进行数据迁移

image.png


POST _reindex
{
  "source": {
    "index": "bank",
    "type": "account"
  },
  "dest": {
    "index": "newbank"
  }
}
{
  "took" : 2420,
  "timed_out" : false,
  "total" : 1000,
  "updated" : 0,
  "created" : 1000,
  "deleted" : 0,
  "batches" : 1,
  "version_conflicts" : 0,
  "noops" : 0,
  "retries" : {
    "bulk" : 0,
    "search" : 0
  },
  "throttled_millis" : 0,
  "requests_per_second" : -1.0,
  "throttled_until_millis" : 0,
  "failures" : [ ]
}
相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
缓存 索引
kibana上执行ES DSL语言查询数据并查看表结构与数据、删除索引、查看文件大小
kibana上执行ES DSL语言查询数据并查看表结构与数据、删除索引、查看文件大小
742 0
|
Java
彻底搞懂Java中的Comparable和Comparator
彻底搞懂Java中的Comparable和Comparator
388 0
|
机器学习/深度学习 PyTorch 数据处理
数据增强与 DataLoader:提升模型泛化能力的策略
【8月更文第29天】在深度学习中,数据的质量和数量对于模型的性能至关重要。数据增强是一种常用的技术,它通过对原始数据进行变换(如旋转、缩放、裁剪等)来生成额外的训练样本,从而增加训练集的多样性和规模。这有助于提高模型的泛化能力,减少过拟合的风险。同时,`DataLoader` 是 PyTorch 中一个强大的工具,可以有效地加载和预处理数据,并支持并行读取数据,这对于加速训练过程非常有帮助。
1053 1
Elasticsearch 查看磁盘占用 查看指定索引磁盘占用
【7月更文挑战第2天】Elasticsearch 查看磁盘占用 查看指定索引磁盘占用
|
存储 缓存 数据处理
ELK中 Elasticsearch和Logstash内存大小设置的考虑
ELK中 Elasticsearch和Logstash内存大小设置的考虑
606 0
|
自然语言处理 索引
es-DSL语句基础操作(Elasticseach)
es-DSL语句基础操作(Elasticseach)
321 1
|
XML Java Apache
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘t
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘t
|
计算机视觉 C++
Mac系统下vscode调试opencv环境搭建
Mac系统下vscode调试opencv环境搭建
278 1
|
存储 缓存 监控
干货 | Elasticsearch 8.X 性能优化实战
干货 | Elasticsearch 8.X 性能优化实战
|
消息中间件 NoSQL 算法
Redis进阶-Stream多播的可持久化的消息队列
Redis进阶-Stream多播的可持久化的消息队列
439 1