重生之我们在ES顶端相遇第6 章- Dynamic Mapping(动态映射)

news2024/11/26 22:37:59

思维导图

在这里插入图片描述

前言

在第5章,我们说完 ES 常用字段类型。但是,并未跟大家解释,为什么不设置 Mapping,写入的字符串,默认就可以全文搜索。例如

PUT /test4/_doc/1
{
    "name": "hello world"
}
GET /test4/_search
{
    "query": {
        "match_bool_prefix": {
            "name": {
                "query": "search wor",
                "operator": "or"
            }
        }
    }
}

这一切都跟 ES 的 dynamic mapping 功能有关。下面我将介绍这一功能。

Dynamic Mapping

可选值介绍

dynamic mapping 默认是开启的。 ES 有以下 4 个可选值

  • • true: 往文档写入新字段时,会自动创建字段类型(默认值)
  • • runtime: 往文档写入新字段时,会自动创建字段类型, 与 true 的区别为,2者字段映射不一样
  • • false: 忽略该字段,无法检索该字段,但是文档中可以看到该字段
  • • strict: 有新字段,则拒绝本次写入
设置 dynamic mapping

创建索引时,手动设置 dynamic 属性值

PUT test4
{
  "mappings": {
    "dynamic": "false",
    "properties": {
      "name": {
        "type": "text"
      },
      "age": {
        "type": "integer"
      },
      "ctime": {
        "type": "date"
      }
    }
  }
}

修改已存在的索引的 dynamic

PUT test4/_mapping
{
  "dynamic": true
}
字段映射默认值
JSON date type“dynamic”:“true”“dynamic”:“runtime”
null不添加字段不添加字段
truefalsebooleanboolean
doublefloatdouble
longlonglong
objectobject不添加字段
array以数组中第一个不为空的元素为准以数组中第一个不为空的元素为准
日期字符串(更多见下文 date detection)datedate
数字字符串(更多见下文 number detection)floatlongdoublelong
不匹配日期、数字的字符串text 以及 .keyword 的子字段keyword
回答开篇提出的问题

学习到这里,就可以解释开篇提出的问题了:为什么不设置 Mapping,写入的字符串,默认就可以全文搜索?

因为索引的 dynamic 默认为 true,当输入的非日期、数字字符串时,会被自动映射为 text 以及携带 .keyword 子字段。

DELETE test4
PUT test4/_doc/1
{
  "name": "hello world"
}
GET test4/_mapping

在这里插入图片描述

Date detection

dete_tection 功能默认启用,即如果添加了一个新的字符串字段,且满足该数据格式 [ "strict_date_optional_time","yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z"] 则会添加一个 date 字段。

禁用 date detection

创建索引时,设置 date_tection

DELETE test4
PUT test4
{
  "mappings": {
    "dynamic": "false",
    "date_detection": false, 
    "properties": {
      "name": {
        "type": "text"
      },
      "age": {
        "type": "integer"
      },
      "ctime": {
        "type": "date"
      }
    }
  }
}

修改已存在的索引的 date_tection

PUT test4/_mapping
{
  "dynamic": true,
  "date_detection": true
}
自定义 date detection

创建索引时,设置 dynamic_date_formats

DELETE test4
PUT test4
{
  "mappings": {
    "dynamic": "false",
    "date_detection": false, 
    "dynamic_date_formats": ["MM/dd/yyyy"],
    "properties": {
      "name": {
        "type": "text"
      },
      "age": {
        "type": "integer"
      },
      "ctime": {
        "type": "date"
      }
    }
  }
}

修改已存在的索引的 dynamic_date_formats

PUT test4/_mapping
{
  "dynamic": true,
  "date_detection": true,
  "dynamic_date_formats": ["MM/dd/yyyy"]
}
Number detection

numeric_detection 默认是被禁用的。

DELETE test4
PUT test4
{
  "mappings": {
    "numeric_detection": true
  }
}

结语

本章介绍了 ES dynamic mapping。下一章,将介绍 ES 的 dynamic template,其可以更好的控制 ES 的字段映射。dynamic template 功能在开发中也相对比较常用。

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

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

相关文章

Qt开发网络嗅探器01

引言 随着互联网的快速发展和普及,人们对网络性能、安全和管理的需求日益增 长。在复杂的网络环境中,了解和监控网络中的数据流量、安全事件和性能 问题变得至关重要。为了满足这些需求,网络嗅探器作为一种重要的工具被 广泛应用。 网络嗅探…

IoTDB 分段查询语句详解:GROUP BY + 时序语义

GROUP BY 查询子句的时序语义展开,IoTDB 支持的分段方式总结! 存储的数据通过分析来发挥价值,当一组被存储的数据通过查询得到分析后的结果时,这些数据才真正在数据库中实现了价值闭环。 在关系型数据库中,GROUP BY 子…

微信小程序数组绑定使用案例(二)

一、数组事件绑定&#xff0c;事件传递数据 1.wxml <text>姓名&#xff1a;{{name}} </text> <block wx:for"{{list}}"><button bind:tap"nameClick2" data-name"{{item}}">修改:{{item}}</button> </block&…

【BUG】已解决:xlrd.biffh.XLRDError: Excel xlsx file; not supported

已解决&#xff1a;xlrd.biffh.XLRDError: Excel xlsx file&#xff1b; not supported 目录 已解决&#xff1a;xlrd.biffh.XLRDError: Excel xlsx file&#xff1b; not supported 【常见模块错误】 错误原因 解决办法&#xff1a; 欢迎来到英杰社区https://bbs.csdn.net/…

【学习笔记】无人机系统(UAS)的连接、识别和跟踪(三)-架构模型和概念

引言 3GPP TS 23.256 技术规范&#xff0c;主要定义了3GPP系统对无人机&#xff08;UAV&#xff09;的连接性、身份识别、跟踪及A2X&#xff08;Aircraft-to-Everything&#xff09;服务的支持。 3GPP TS 23.256 技术规范&#xff1a; 【免费】3GPPTS23.256技术报告-无人机系…

Ubuntu 中默认的 root 用户密码

场景&#xff1a;想要切换root用户&#xff0c;发现得输入密码&#xff0c;以为是以前设置过然后一直尝试都是错误【认证失败】最后发现根本没设置过root用户&#xff0c;默认会随机生成root用户的密码&#x1f605; Ubuntu 中默认的 root 密码是随机的&#xff0c;即每次开机都…

Golang | Leetcode Golang题解之第263题丑数

题目&#xff1a; 题解&#xff1a; var factors []int{2, 3, 5}func isUgly(n int) bool {if n < 0 {return false}for _, f : range factors {for n%f 0 {n / f}}return n 1 }

数据结构->线性结构->顺序存储->静态链表

一、思路 链表由节点组成。 1、分析需求&#xff0c;画图&#xff1a; 2、定义学生结构体&#xff0c;包含姓名、年龄、性别和下一个学生的指针&#xff1a; #include <stdio.h> #define N 20// 定义性别枚举类型&#xff0c;固定值&#xff0c;不是男就是女 typedef e…

基于Centos7搭建rsyslog服务器

一、配置rsyslog可接收日志 1、准备新的Centos7环境 2、部署lnmp环境 # 安装扩展源 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo# 安装扩展源 yum install nginx -y# 安装nginx yum install -y php php-devel php-fpm php-mysql php-co…

JVM:GraalVM

文章目录 一、介绍1、什么是GraalVM&#xff1a;2、GraalVM版本 二、两种使用模式 一、介绍 1、什么是GraalVM&#xff1a; GraalVM是Oracle官方推出的一款高性能JDK&#xff0c;使用它享受比OpenJDK或者OracleJDK更好的性能。GraalVM的官网地址&#xff1a;https://www.graa…

我在高职教STM32——串口通信(4)

大家好,我是老耿,高职青椒一枚,一直从事单片机、嵌入式、物联网等课程的教学。对于高职的学生层次,同行应该都懂的,老师在课堂上教学几乎是没什么成就感的。正因如此,才有了借助 CSDN 平台寻求认同感和成就感的想法。在这里,我准备陆续把自己花了很多心思的教学设计分享…

十年前的老电脑能装win10吗_十年前的老电脑用U盘安装win10教程

十年前的老电脑能装win10吗&#xff1f;十年前的老电脑只要满足win10最低要求的配置都可以安装win10。安装win10方法很多&#xff0c;有一键重装方法、U盘安装、硬盘安装等方式&#xff0c;但最靠谱的方式还是U盘安装。十年前的老电脑用U盘安装win10首先要将u盘制作成u盘启动盘…

Flutter中GetX的用法(超详细使用指南之路由依赖管理篇)

目录 1.前言 2.GetX 依赖管理概述 1.GetX 依赖管理的基本概念 2.与其他依赖管理工具的比较 3. 基础依赖注入 1.Get.put 2.Get.lazyPut 3.Get.putAsync 4.高级依赖注入 1.使用Get.create 2.依赖生命周期管理 5. 参考资料 1.前言 今天这篇博客主要介绍Getx的三大功能…

【AI学习】LLaMA 系列模型的进化(二)

在前面LLaMA 系列模型的进化&#xff08;一&#xff09;中学习了LLama模型的总体进化发展&#xff0c;再来看看其中涉及的一些重要技术。 PreLayerNorm Layer Norm有Pre-LN和Post-LN两种。Layer Normalization&#xff08;LN&#xff09;在Transformer架构中的放置位置对模型…

Java实战中如何使用多线程(线程池)及其为什么使用?

这个话题在入行之前就想过很多次&#xff0c;很多8古文或者你搜索的结果都是告诉你什么提高高并发或者是一些很高大上的话&#xff0c;既没有案例也没有什么公式去证明&#xff0c;但是面试中总是被问到&#xff0c;也没有实战经历&#xff0c;所以面试时一问到多线程的东西就无…

python os库使用教程

os库使用教程 1.创建文件夹os.path.exists&#xff08;&#xff09;检查文件是否存在os.listdir查看文件夹下的所有文件filename.endswith()查看文件列表的png或者txt结尾的所有文件shutil.move移动目标到文件夹 1.创建文件夹 先在盘符里创建一个文件用来演示&#xff0c;我这里…

GPT-LLM

本心、输入输出、结果 文章目录 GPT-LLM前言国际公司AI发展概览国内公司AI发展概览GPT-LLM 编辑 | 简简单单 Online zuozuo 地址 | https://blog.csdn.net/qq_15071263 如果觉得本文对你有帮助,欢迎点赞、收藏、评论 前言 国际公司AI发展概览 公司主要AI贡献与产品特点OpenAI…

【Qt】常用控件 Q widget的enabled属性,geometry属性

Qt是一个实现图形化程序的程序。为了便于我们开发&#xff0c;Qt为我们提供了许多“控件”。我们需要熟悉并掌握这些控件的使用。 一.什么是控件 控件是构成⼀个图形化界⾯的基本要素. 示例一&#xff1a; 像上述⽰例一中的,按钮,列表视图,树形视图,单⾏输⼊框,多⾏输⼊框,滚动…

数据恢复篇:适用于 Android 视频恢复的 6 个工具

在智能手机这个动态的世界里&#xff0c;每一刻都被捕捉并以数字方式存储&#xff0c;丢失珍贵的视频可能是一种令人心碎的经历。不必担心&#xff0c;因为 Android 生态系统提供了大量旨在挽救这些珍贵回忆的视频恢复应用程序。 这些应用程序是强大的工具&#xff0c;旨在挽救…

使用Amazon Web Services Lambda把天气预报推送到微信

最近北京开始下雨&#xff0c;开始和同事打赌几点能够雨停&#xff0c;虽然Iphone已经提供了实时天气&#xff0c;但是还是想用国内的API试试看看是不是更加准确些。 以下是我使用的服务&#xff1a; 地图SDK/APP获取 经纬度彩云天气API 通过地理位置获取天气信息Lambda 作为…