ElasticSearch之Index Template 和Dynamic Template

写在前面

在ElasticSearch之Mapping 一文中我们一起看了es的dynamic mapping机制,通过该机制允许我们不需要显式的定义mapping信息,而是es根据插入的文档值来自动生成 ,比如插入如下的文档:

{"firstName": "Chan","lastName": "Jackie","loginDate": "2018-07-24"
}

其中firstName和lastName会被映射为text类型,并自动添加keyword类型的子字段 ,loginDate因为数据格式符合日期类型被自动映射为date类型。考虑这样的需求,我们不希望给text类型的字段自动应用多字段,即增加keyword类型的子字段,并且我们也不希望当插入的数据时日期类型时不要映射为date类型,该怎么做呢?此时就可以考虑使用index template,在索引的级别之上来定义所有字段的mapping规则。index template不仅可以来对索引的mapping信息做全局的定义,还可以对index的setting信息做全局定义,如定义分片数,副本数,例子如下:
在这里插入图片描述

如果我们向对字段类型做更加精细的控制,即控制某个字段自动映射的类型,如当某个字段是以is开头时,则自动映射为Boolean类型,此时就需要使用到Dynamic Template机制了,如下例子:
在这里插入图片描述

本部分我们就来详细看下index template机制和dynamic template机制。

1:index template

在es中我们可能需要定义非常多的index,我们可以通过index template来全局的设置某些索引多少分片,多少副本,如何mapping等,这样就不需要每个索引单独指定了,具体关于index tempate直接看下图:
在这里插入图片描述
例子:
在这里插入图片描述
工作方式:
在这里插入图片描述

接着来看demo:

  • 创建2个index template并查看
    第一个索引是tempate_default,第二索引是tempate_test。
# 1:创建第一个index template
# 匹配所有的索引,设置setting,分片和副本都是1
PUT _template/tempate_default
{"index_patterns": ["*"],"order": 0,"version": 1,"settings": {"number_of_shards": 1,"number_of_replicas": 6}
}
# 2:创建第二个template,匹配test开头的索引,再setting中设置分片为1,副本
# 为2,在mapping中设置不自动检测date类型,自动检测整数类型
PUT _template/tempate_test
{"index_patterns": ["test*"],"order": 1,"settings": {"number_of_shards": 1,"number_of_replicas": 2},"mappings": {"date_detection": false,"numeric_detection": true}
}# 3:查看定义的两个index template
GET _template/tempate_*

在这里插入图片描述

  • 创建1个只匹配tempate_default的索引
    在这里插入图片描述
  • 创建1个匹配tempate_test的索引并查看mapping和setting
# 1:创建匹配template_default的索引
PUT test_idx/_doc/1
{"someKey": "someVal"
}
# 2:查看索引的mapping
GET test_idx/_settings
# 2:查看索引的setting
GET test_idx/_mapping

setting和mapping信息如下图:
在这里插入图片描述

  • 创建1个自定义了mapping和seting的索引
# 1:创建自定义了mapping和setting和index
# 在setting中设置副本数为4,在mapping中设置打开自动日期类型检测
PUT assign_idx
{"settings": {"number_of_replicas" : 4},"mappings": {"date_detection" : true}
}# 2:查看mapping和setting
GET assign_idx/_mapping
GET assign_idx/_settings

mapping和setting如下,可以看到使用了自定义的配置:
在这里插入图片描述

2:dynamic template

通过dynamic template是一种根据识别出的类型信息,以及字段名称等来动态设置字段mapping信息的一种机制,如下图:
在这里插入图片描述
看几个例子。

  • 如果text并且以is开头的则映射为Boolean类型,否则类型映射为keyword
    首先来定义索引:
DELETE myidx
PUT myidx
{"mappings": {"dynamic_templates": [{"strings_to_boolean": {"match_mapping_type": "string","match": "is*","mapping": {"type": "boolean"}}},{"strings_to_keyword": {"match_mapping_type": "string","mapping": {"type": "keyword"}}}]}
}

解释如下:
在这里插入图片描述
接着我们来插入一个文档:
在这里插入图片描述

  • 根据文档路径来定义mapping信息
    首先来定义索引:
DELETE myidx
PUT myidx
{"mappings": {"dynamic_templates": [{"copy_to_fullname": {"path_match": "name.*","path_unmatch": "*.middle","mapping": {"type": "text","copy_to": "full_name"}}}]}
}

解释如下:
在这里插入图片描述
插入文档:
在这里插入图片描述
尝试搜索 full_name:

# 可以搜索到,因为first由copy_to
GET myidx/_search?q=full_name:"111"
# 搜索不到,因为middle没有copy_to
GET myidx/_search?q=full_name:"222"
# 可以搜索到,因为last由copy_to
GET myidx/_search?q=full_name:"333"

3:dynamic mapping,index template,dynamic template

dynamic mapping 是一种es自动根据值来生成mapping信息的一种机制。index template是在索引级别上来预定义mapping和setting信息的一种机制,dynamic tempalte是在字段级别上来预定义mapping信息的一种机制。

写在后面

参考文章列表

ElasticSearch之Mapping

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

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

相关文章

前端新手Vue3+Vite+Ts+Pinia+Sass项目指北系列文章 —— 第十一章 基础界面开发 (组件封装和使用)

前言 Vue 是前端开发中非常常见的一种框架,它的易用性和灵活性使得它成为了很多开发者的首选。而在 Vue2 版本中,组件的开发也变得非常简单,但随着 Vue3 版本的发布,组件开发有了更多的特性和优化,为我们的业务开发带…

css pointer-events 多层鼠标点击事件

threejs 无法滑动视角,菜单界面覆盖threejs操作事件。 pointer-events /* Keyword values */ pointer-events: auto; pointer-events: none; pointer-events: visiblePainted; /* SVG only */ pointer-events: visibleFill; /* SVG only */ pointer-events: visib…

Python中HTTP请求的基本方法:穿越网络的魔法咒语

在网络世界中,HTTP请求就像是对服务器的“魔法咒语”,它能让我们的Python程序与远方的服务器进行沟通,获取或发送数据。今天,我们就来聊聊Python中HTTP请求的基本方法,看看这些“咒语”是如何施展的。 首先&#xff0…

力扣爆刷第74天--动态规划01背包

力扣爆刷第74天–动态规划 文章目录 力扣爆刷第74天--动态规划一、494.目标和二、474.一和零 一、494.目标和 题目链接:https://leetcode.cn/problems/target-sum/description/ 思路:求目标和的组合数,把物品里的元素分为左右两堆&#xff0…

java数据结构与算法刷题-----LeetCode155. 最小栈

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 1. 法一:使用辅助最小栈 解题思路:时间复杂度O(1)…

自己怎么做小程序?如何通过小程序赚钱?如何确保产品有竞争力?

引言 随着科技的迅速发展,小程序已经成为创业者们进军电商领域的一种重要途径。在这个数字时代,通过小程序卖东西已经成为一种便捷而高效的商业模式。本文将为您解析自己如何通过小程序销售商品,并实现盈利的关键步骤。无论您是初入创业圈的…

ClickHouse 基础(一)

官网 以毫秒为单位查询数十亿行 ClickHouse是用于实时应用和分析的最快、资源效率最高的开源数据库。 安装ClickHouse 使用ClickHouse,你有三个选择: ClickHouse云:官方ClickHouse作为一项服务,-由ClickHouse的创建者构建,维护和支持快速安…

【软件设计模式之适配器模式】

文章目录 前言一、适配器模式概述1.定义与目的2.使用场景系统升级与集成接口不一致问题的解决兼容旧版本API多种数据源处理 二、适配器模式的结构1.主要组件适配器(Adapter)目标接口(Target Interface)被适配者(Adapte…

亚马逊广告:掌握基础知识以提升销量

如果你是一名卖家,希望通过亚马逊这个强大的电商平台扩大你的业务,那么了解亚马逊的广告系统就显得至关重要。有效地利用亚马逊广告服务不仅可以提高你的产品可见性,还可以增加销量,从而提升你的整体业绩。在本篇文章中&#xff0…

人机协同中的态势感知纠错

态势感知纠错在人机协同中是一种重要的技术手段,旨在提高机器感知和理解现实世界的能力,从而更好地支持人类的决策与行动。具体来说,态势感知纠错技术可以通过以下方式实现: 1、感知和理解 机器可以感知和理解环境中的各种信息&am…

Hadoop-Yarn-调度器总结

一、Yarn有哪些调度器 在cdh中Yarn组件中查看配置如下: 可以看到Yarn有三种调度器,分别是FairScheduler、FifoScheduler、CapacityScheduler,它们都是Hadoop的一个可插入调度器。 cdh默认的调度器是FairScheduler,hadoop默认的调…

神经网络权重初始化

诸神缄默不语-个人CSDN博文目录 (如果只想看代码,请直接跳到“方法”一节,开头我介绍我的常用方法,后面介绍具体的各种方案) 神经网络通过多层神经元相互连接构成,而这些连接的强度就是通过权重&#xff…

Linux-目录I/O-004

学习重点: 1.目录I/O的函数接口 2.目录的遍历,目录的递归遍历 1.【mkdir】 1.1函数原型 【int mkdir(const char *pathname, mode_t mode);】1.2函数功能 创建目录文件1.3函数参数 1.3.1【pathname】 文件路径1.3.2【mode】 文件的权限1.4返回值 …

【Java EE初阶二十】关于http(一)

1. 初识http HTTP 最新的版本应该是 HTTP/3.0,目前大规模使用的版本 HTTP/1.1; 下面来简单说明一下使用 HTTP 协议的场景: 1、浏览器打开网站 (基本上) 2、手机 APP 访问对应的服务器 (大概率) 前面的 TCP与UDP 和http不同,HTTP 的报文格式&a…

【conda环境 安装 tensorflow2.2】 解决方案

1.检查anaconda安装:在cmd输入 conda --version 2.检测已经安装的环境:conda info --envs 3.新建一个python3.5的环境,tensorflow: ###conda create -n xxx python3.5 xxx为虚拟环境名 ###conda create -n xxx python3.6 xxx为虚拟…

中科星图——影像卷积核函数Kernel之gaussian高斯核函数核算子、Laplacian4核算子和square核算子等的分析

简介 高斯核函数是图像处理中常用的一种卷积核函数。它是一种线性滤波器,可以实现图像的平滑处理。在图像处理中,高斯核函数的卷积操作可以用于去噪、平滑和模糊等任务。 高斯核函数的定义可以表示为一个二维高斯分布函数,表达式如下: G(x, y) = (1 / (2 * pi * sigma^2…

openGauss 5.0.0全密态数据库应用小试

前言 openGauss HCIA教材中,安全是一个重要的章节,在实际项目中,随着网络安全和信息安全形势的变化,企业也越来越重视数据库安全。去年在HALP内部进行openGauss培训时,安全特性就被学员们提出来要重点讲解&#xff0c…

【DC-DC】世微 AP2813 平均电流型双路降压恒流驱动器

产品描述 AP2813 是一款双路降压恒流驱动器,高效率、外 围简单、内置功率管,适用于 5-80V 输入的高精度降 压 LED 恒流驱动芯片。内置功率管输出最大功率可达 12W,最大电流 1.2A。 AP2813 一路直亮,另外一路通过 MODE1 切换 全亮&#…

使用C++调用浏览器、邮箱等

ShellExecute的功能是运行一个外部程式(或者是开启一个已注册的文件、开启一个目录、列印一个文件等等),并对外部程式有一定的控制。 函数原型: HINSTANCE ShellExecute( HWND hwnd,LPCTSTR lpOperation,LPCTSTR lpFile,LPCTSTR …

SICTF Round#3 Web方向 题解WP

100%_upload 题目描述:小茂夫说:一直上传恶意文件尊嘟要生气了,世事莫固守,转变思路求突破 开题,注意有个文件包含 题目把后缀过滤死了,无法上传php后缀文件。文件内容些许过滤,短…