带你读《Elastic Stack 实战手册》之33:——3.4.2.17.2.Schemaless(下)

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 带你读《Elastic Stack 实战手册》之33:——3.4.2.17.2.Schemaless(下)


《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.17.Text analysis, settings 及 mappings——3.4.2.17.2.Schemaless(上) https://developer.aliyun.com/article/1230158


match_mapping_type

 

Match_mapping_type 是 JSON 解析器检测到的数据类型。 因为 JSON 不区分 long 与整数或 double 与浮点数,所以它总是选择更广泛的数据类型,例如 long 表示整数,double 表示浮点数。

 

使用通配符 (*) 匹配所有数据类型。

 

例如,如果我们想将所有整数字段映射为整数而不是长整数,并将所有字符串字段映射为 text 和 keyword ,我们可以使用以下模板:

 

PUT my-index-000001
{
  "mappings": {
    "dynamic_templates": [
      {
        "integers": {
          "match_mapping_type": "long",
          "mapping": {
            "type": "integer"
          }
        }
      },
      {
        "strings": {
          "match_mapping_type": "string",
          "mapping": {
            "type": "text",
            "fields": {
              "raw": {
                "type":  "keyword",
                "ignore_above": 256
              }
            }
          }
        }
      }
    ]
  }
}
PUT my-index-000001/_doc/1
{
  "my_integer": 5, (1)
  "my_string": "Some string" (2)
}

1、my_integer 字段被映射为 integer。

2、my_string 字段被映射为 text 和 keyword 多字段类型。

 

match 和 unmatch

 

Match 参数使用模式来匹配字段名称,而 unmatch 使用模式来排除 match 匹配的字段。

 

Match_pattern 参数调整 match 参数的行为以支持完整的 Java 正则表达式匹配字段名称而不是简单的通配符。例如:


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

以下示例匹配名称以 long_ 开头的所有字符串字段(以 _text 结尾的字符串字段除外)并将它们映射为长字段:


PUT my-index-000001
{
  "mappings": {
    "dynamic_templates": [
      {
        "longs_as_strings": {
          "match_mapping_type": "string",
          "match":   "long_*",
          "unmatch": "*_text",
          "mapping": {
            "type": "long"
          }
        }
      }
    ]
  }
}
PUT my-index-000001/_doc/1
{
  "long_num": "5", (1)
  "long_text": "foo" (2)
}

1、long_num 字段被映射为 long。

2、long_text 字段使用默认字符串映射。

 

path_match 和 path_unmatch

 

path_match 和 path_unmatch 参数的工作方式与 match 和 unmatch 相同,但对字段的完整虚线路径进行操作,而不仅仅是最终名称,例如 some_object.*.some_field。

 

此示例将 name 对象中任何字段的值复制到顶级 full_name 字段,middle字段除外:

 

PUT my-index-000001
{
  "mappings": {
    "dynamic_templates": [
      {
        "full_name": {
          "path_match":   "name.*",
          "path_unmatch": "*.middle",
          "mapping": {
            "type":       "text",
            "copy_to":    "full_name
          }
        }
      }
    ]
  }
}
PUT my-index-000001/_doc/1
{
  "name": {
    "first":  "John",
    "middle": "Winston",
    "last":   "Lennon"
  }
}

请注意,path_match 和 path_unmatch 参数除了叶字段外还匹配对象路径。 例如,索引以下文档将导致错误,因为 path_match 设置也匹配对象字段 name.title,它不能映射为文本:


PUT my-index-000001/_doc/2
{
  "name": {
    "first":  "Paul",
    "last":   "McCartney",
    "title": {
      "value": "Sir",
      "category": "order of chivalry"
    }
  }
}
相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
编解码 监控 网络协议
【绝密技巧】揭秘!如何用魔法般的步骤实现RTSP推送H.264与H.265(HEVC),打造震撼视听盛宴,让每一帧都充满魔力!
【8月更文挑战第15天】本文详述了如何使用RTSP流媒体服务推送H.264及H.265编码视频,适用于视频监控和直播平台。首先需确保环境支持这两种编码格式,可通过FFmpeg实现。在Ubuntu上安装FFmpeg后,可配置从摄像头捕获视频并推流至RTSP服务器。针对H.265编码,只需更改视频编码器为`libx265`。客户端可使用VLC播放器接收流。此外,还提供了C++示例代码用于自定义服务器实现,包括初始化上下文、打开编码器和循环编码视频帧。此教程旨在助力实现RTSP推送目标。
389 0
|
DataWorks 安全 关系型数据库
DataWorks产品使用合集之想要删除MC表中的部分数据记录,该怎么操作
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
140 6
锁屏组件新能力实现问题之在Activity中锁屏状态下显示悬浮窗的实现如何解决
锁屏组件新能力实现问题之在Activity中锁屏状态下显示悬浮窗的实现如何解决
248 0
|
机器学习/深度学习 自然语言处理 PyTorch
精通 Transformers(二)(3)
精通 Transformers(二)
206 0
|
缓存 NoSQL 中间件
redis内存溢出报错--OOM command not allowed when used memory > 'maxmemory'
该内容是关于Redis缓存服务器的使用指南。通过Xshell连接IP地址为25.218.153.193或206的主机,进入/data/iuap/middleware/redis-30001/bin目录,使用`redis-cli`连接到IP为206的30003端口。登录时需`auth yonyou*123`,可运行`info`和`info memory`查看状态,`flushall`清理缓存。在清理前,要备份/data/iuap/middleware/redis-30003/data/下的.aof和.rdb文件,利用tar命令打包并移至/tmp目录。
|
jenkins Java Shell
【CI/CD技术专题】「Jenkins实战系列」Jenkinsfile+DockerFile实现自动部署
【CI/CD技术专题】「Jenkins实战系列」Jenkinsfile+DockerFile实现自动部署
590 0
【CI/CD技术专题】「Jenkins实战系列」Jenkinsfile+DockerFile实现自动部署
|
前端开发 NoSQL easyexcel
前后端分离项目知识汇总(阿里云Oss,EasyExcel,视频点播,SpringCloud,Redis,Nuxt)-2
前后端分离项目知识汇总(阿里云Oss,EasyExcel,视频点播,SpringCloud,Redis,Nuxt)
294 0
|
Python
whl文件安装库和pip换源
whl文件安装库和pip换源
1032 0
whl文件安装库和pip换源
|
网络协议 Ubuntu 关系型数据库
树莓派ubuntu20.04+Docker+Nginx+Wordpress个人网站搭建全纪录(超详细,入门友好篇)
前言: 本文基于树莓派4B平台,搭载Ubuntu Server 20.04 LTS版本服务器系统,通过将树莓派服务器连接Ipv6公网网络,利用Docker工具,部署Nginx反向代理与Wordpress网站管理系统,实现网站搭建与异地访问。同时用到了域名管理、DDNS、MySQl等工具。本文将从服务器镜像烧录开始,将网站搭建过程进行完整的说明记录。 (经验来自互联网,多次试错学习后总结如下,以供参考。) 关键词: 树莓派; Ubuntu ; Ipv6 ;Docker
1216 1
树莓派ubuntu20.04+Docker+Nginx+Wordpress个人网站搭建全纪录(超详细,入门友好篇)
|
存储 人工智能 自然语言处理
领域知识图谱-中式菜谱知识图谱:实现知识图谱可视化和知识库智能问答系统(KBQA)
领域知识图谱-中式菜谱知识图谱:实现知识图谱可视化和知识库智能问答系统(KBQA)
领域知识图谱-中式菜谱知识图谱:实现知识图谱可视化和知识库智能问答系统(KBQA)