Elasticsearch 映射Mappings (三)

文章目录

  • 前言
  • 一、Mapping简介
    • 查看索引映射
  • 二、自动映射 dynamic mapping
    • 自动类型推断
    • mapping注意点
  • 三、手动映射 Expllicit mapping
    • 创建索引
  • 四、自动映射模板 Dynamic Templates
    • 定义映射模板
    • 规则判定:conditlons
      • match_mapping_type
      • match、unmatch
      • path_match、path_unmatch
      • 分词器变量
  • 总结


前言

本文主要记录映射Mappings的作用、类型、ES常用数据类型、常见参数、重要的数据类型、映射配置、映射模板。

静态参数使不可修改的,所以mappings里的配置需要谨慎行事


一、Mapping简介

mapping类似Mysql中的表结构,在Maping里包含了一些属性,比如字段名称、类型、字段使用的分词器、是否评分、是否创建索引等属性,并且在ES中一份字段可以有多个类型。

查看索引映射

所有(默认创建keyword映射)

GET <索引名>/_mapping
{"text_create": {"mappings": {"properties": {"name": {"type": "text","fields": {"keyword": {"type": "keyword","ignore_above": 256}}}}}}
}

查看指定

GET <索引名>/_mapping/field/<字段名称>
{"text_create": {"mappings": {"name": {"full_name": "name","mapping": {"name": {"type": "text","fields": {"keyword": {"type": "keyword","ignore_above": 256}}}}}}}
}

二、自动映射 dynamic mapping

在索引文档写入时发生自动创建mapping的机制。在写入文档时会自动为该文档创建mapping映射字段。在创建索引时不要求创建mapping映射,ES会根据字段值来推断字段类型,进而创建并指定索引类型。

自动类型推断

自动类型推断的规则为:

field typedynamicruntime
true/falsebooleanboolean
小数floatdouble
数字longlong
objectobject-
数组取决于数组中的第一个非空元素类型取决于数组中的第一个非空元素类型
日期格式字符串datedate
数字类型字符串float/longdouble/long
其它字符串text + keywordkeyword

自动映射器会尽可能的把字段映射为宽字段类型

PUT text_create/_doc/1
{"price": 18.12,"display": true,"object":{"1":1,"2":2},"arey" :["3","4"],"time": "2011-11-12"
}

mapping对应映射

{"text_create": {"mappings": {"properties": {"age": {"type": "long"},"arey": {"type": "text","fields": {"keyword": {"type": "keyword","ignore_above": 256}}},"display": {"type": "boolean"},"name": {"type": "text","fields": {"keyword": {"type": "keyword","ignore_above": 256}}},"object": {"properties": {"1": {"type": "long"},"2": {"type": "long"}}},"price": {"type": "float"},"time": {"type": "text","fields": {"keyword": {"type": "keyword","ignore_above": 256}}}}}}
}

mapping注意点

  • ES 没有隐式转换
  • ES 不支持类型修改
  • 生产环境尽可能避免使用 dynamic mapping

三、手动映射 Expllicit mapping

也称为显示映射,在索引文档写入前。创建索引并且指定索引中每个字段类型、分词器等参数。

mapping索引创建完成后,部分mapping的属性时不允许更改的

创建索引

PUT text_mapping
{"mappings": {"properties": {"text_field" : {"type": "text","fields": {"text_filed_keyword":{"type": "keyword"}}},"long_field": {"type": "long"}}}
}

四、自动映射模板 Dynamic Templates

在定义字段映射的时候,往往字段不一定有具体的名称,有时候希望对一类相同或者相似特征的字段定义相同的映射,此时可以使用Dynamic Templates。

定义映射模板

"dynamic_templates": [{"my_template_name": {... match conditions ..."mapping":{...}}},...
]

规则判定:conditlons

match_mapping_type

用于匹配数据类型

例子

PUT templates_text
{"mappings": {"dynamic_templates": [{"integers":{"match_mapping_type": "long","mapping": {"type": "integer"}}},{"integers":{"match_mapping_type":"string","mapping": {"type": "keyword"}}}]}
}

插入数据,对应的字段将会自动带上对应的类型。

PUT templates_text/_doc/1
{"my_integer": 500,"my_string": "smz"
}
      "properties": {"my_integer": {"type": "integer"},"my_string": {"type": "keyword"}}

match、unmatch

用以匹配字段名称规则,支持通配符、正则表达式。

正则:

 "match_pattern": "regex","match": "^profit_\d+$"

示例:

PUT templates_text2
{"mappings": {"dynamic_templates": [{"longs_as_strings":{"match_mapping_type": "string","match": "num_*", #以num_*开头"unmatch": "*_text",#不以_text结尾"mapping": {"type": "long"}}}]}
}

path_match、path_unmatch

用于嵌套字段

用例:

PUT templates_text3
{"mappings": {"dynamic_templates": [{"full_name":{"path_match": "name.*", #路径"path_unmatch": "*.middle",#路径不匹配"mapping": {"type": "text","copy_to": "full_name"#符合的字段拷贝到此}}}]}
}

分词器变量

PUT templates_text4
{"mappings": {"dynamic_templates": [{"named_analyzers":{"match_mapping_type": "string","match": "*", "mapping": {"type": "text","analyzer": "{name}" #分词器名称}}},{"no_doc_values":{"match_mapping_type": "*","mapping": {"type": "{dynamic_type}","doc_values": "false"}}}]}
}

以上示例,定义的两个模板,有以下规则:

  • 所有字符串类型的字段,其分词器都会定义为和字段名称一致的分词器
  • 所有非文本类型的字段,都会关闭doc_values

总结

本文主要记录了ES映射以及映射配置、映射模板。

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

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

相关文章

勘探开发人工智能技术:地震层位解释

1 地震层位解释 层位解释是地震构造解释的重要内容&#xff0c;是根据目标层位的地震反射特征如振幅、相位、形态、连续性、特征组合等信息在地震数据体上进行追踪解释获得地震层位数据的方法。 1.1 地震信号、层位与断层 图1.1 所示为地震信号采集的过程&#xff0c;地面炮…

图像处理之canny边缘检测(非极大值抑制和高低阈值)

Canny 边缘检测方法 Canny算子是John F.Canny 大佬在1986年在其发表的论文 《Canny J. A computational approach to edge detection [J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1986 (6): 679-698.》提出来的。 检测目标&#xff1a; 低错误率…

xml中的转义字符

xml中的转义字符 &amp;对应的字符是&<对应的字符是<>对应的字符是>&quot;对应的字符是"&apos;对应的字符是 转义的实体引用虽然简单易用&#xff0c;但是需要记忆&#xff0c;而且如果字符串中包含大量的特殊字符&#xff0c;还需要进行逐一替…

学好Elasticsearch系列-Mapping

本文已收录至Github&#xff0c;推荐阅读 &#x1f449; Java随想录 文章目录 Mapping 的基本概念查看索引 Mapping 字段数据类型数字类型基本数据类型Keywords 类型Dates&#xff08;时间类型&#xff09;对象类型空间数据类型文档排名类型文本搜索类型 两种映射类型自动映射&…

动手学DL——深度学习预备知识随笔【深度学习】【PyTorch】

文章目录 2、预备知识2.1、数据操作2.2、线性代数&矩阵计算2.3、导数2.4、基础优化方法 2、预备知识 2.1、数据操作 batch&#xff1a;以图片数据为例&#xff0c;一次读入的图片数量。 小批量样本可以充分利用GPU进行并行计算提高计算效率。 数据访问 数组&#xff1a;np…

Android 实现阅读用户协议的文字控件效果

开发中&#xff0c;经常要用到一些阅读隐私协议的场景&#xff0c;原生的textview控件很难做到在一个控件里有两个点击事件&#xff0c;那现在就来安利一个强大的组件——SpannableStringBuilder。 先看看效果&#xff1a; 直接上代码&#xff0c;布局文件&#xff1a; <Li…

【图像处理】使用自动编码器进行图像降噪(改进版)

阿里雷扎凯沙瓦尔兹 一、说明 自动编码器是一种学习压缩和重建输入数据的神经网络。它由一个将数据压缩为低维表示的编码器和一个从压缩表示中重建原始数据的解码器组成。该模型使用无监督学习进行训练&#xff0c;旨在最小化输入和重建输出之间的差异。自动编码器可用于降维、…

【iOS】动态链接器dyld

参考&#xff1a;认识 dyld &#xff1a;动态链接器 dyld简介 dyld&#xff08;Dynamic Linker&#xff09;是 macOS 和 iOS 系统中的动态链接器&#xff0c;它是负责在运行时加载和链接动态共享库&#xff08;dylib&#xff09;或可执行文件的组件。在 macOS 系统中&#xf…

STM32MP157驱动开发——按键驱动(定时器)

“定时器 ”机制&#xff1a; 内核函数 定时器涉及函数参考内核源码&#xff1a;include\linux\timer.h 给定时器的各个参数赋值&#xff1a; setup_timer(struct timer_list * timer, void (*function)(unsigned long),unsigned long data)&#xff1a;设置定时器&#xf…

解决 npm ERR! missing script: build 错误的方法

系列文章目录 文章目录 系列文章目录前言一、错误原因二、解决方法&#xff1a;三、注意事项&#xff1a;总结 前言 在使用 npm 进行前端项目构建时&#xff0c;有时会遇到错误信息 “npm ERR! missing script: build”&#xff0c;该错误通常发生在没有定义构建脚本时。本文将…

多元函数的概念

目录 多元函数的极限&#xff1a; 例题1&#xff1a; 例题2&#xff1a; 多元函数的连续性 连续函数的性质 偏导数 高阶偏导数 定理1&#xff1a; 全微分 可微的必要条件 用定义来判断是否可微 可微的充分条件 连续偏导可微的关系 多元函数的极限&#xff1a; 对于一个二元…

macOS Ventura 13.5 (22G74) 正式版发布,ISO、IPSW、PKG 下载

macOS Ventura 13.5 (22G74) 正式版发布&#xff0c;ISO、IPSW、PKG 下载 本站下载的 macOS Ventura 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。另外也…

服务器数据库中了Locked勒索病毒,企业应该如何正确处理并采取后续防护措施

网络技术的发展极大地方便了人们的工作生活&#xff0c;但同样带来了一定的网络安全威胁&#xff0c;其中较为危险的威胁就是勒索病毒攻击&#xff0c;勒索病毒不仅会给我们的计算机系统带来破坏&#xff0c;还会加密我们的重要文件数据来敲诈勒索&#xff0c;只有用户支付的赎…

深度学习超参数

每个超参数在训练中的作用&#xff1a; policy: 决定智能体学习环境时使用的策略网络结构&#xff0c;如多层感知机策略&#xff08;MlpPolicy&#xff09;或卷积神经网络策略&#xff08;CnnPolicy&#xff09;。 learning_rate: 控制神经网络权重更新的速度&#xff0c;影响…

提高可视性的五大方法可增强 Horizon Cloud 下一代平台的性能和用户体验

我们在 VMware Explore US 2022 推出了 VMware Horizon Cloud 下一代平台。该平台为使用现代化虚拟桌面和应用的客户提供了一个新的混合型桌面服务&#xff08;DaaS&#xff09;架构&#xff0c;其围绕降低成本和提高可扩展性而构建。首次发布后&#xff0c;我们在 VMware Expl…

gerrit 从安装到出坑

一般公司在做代码审核的时候选择codereview gerrit来处理代码的入库的问题。 它是通过提交的时候产生Change-Id: If4e0107f3bd7c5df9e2dc72ee4beb187b07151b9 来决定是不是入库&#xff0c;一般如果不是通过这个管理&#xff0c;那么就是我们通常的操作 git add . git comm…

设计模式-工厂模式

定义 工厂模式是用来创建对象的一种最常用的设计模式&#xff0c;不暴露创建对象的具体逻辑&#xff0c;而是将将逻辑封装在一个函数中&#xff0c;那么这个函数就可以被视为一个工厂 其就像工厂一样重复的产生类似的产品&#xff0c;工厂模式只需要我们传入正确的参数&#…

rust 配置

rustup 镜像 在 cmd 中输入以下代码&#xff0c;设置环境变量 setx RUSTUP_UPDATE_ROOT https://mirrors.tuna.tsinghua.edu.cn/rustup/rustup setx RUSTUP_DIST_SERVER https://mirrors.tuna.tsinghua.edu.cn/rustupcrates.io 索引镜像 在 C:\Users\用户名\.cargo\config 文…

【MySQL】MySQL HeatWave 介绍

HeatWave是一个分布式、可扩展、无共享、内存中、混合柱状的查询处理引擎&#xff0c;专为获得极致性能而设计。可以通过向MySQL数据库系统添加一个HeatWave集群来启用它。 HeatWave 是一种大规模并行、高性能内存查询加速器&#xff0c;可将分析工作负载、混合工作负载和机器…

Linux 学习记录55(ARM篇)

Linux 学习记录55(ARM篇) 本文目录 Linux 学习记录55(ARM篇)一、使用C语言封装GPIO函数1. 封装GPIO组寄存器2. 封装GPIO模式以及相关配置3. 封装GPIO初始化结构体4. 使用自己的封装配置GPIO 一、使用C语言封装GPIO函数 1. 封装GPIO组寄存器 #define GPIOA ((GP…