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

简介: 带你读《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并实现搜索。  
相关文章
|
10月前
|
监控 数据挖掘 API
拼多多API应用:社交分享驱动销量飙升!
本文介绍如何通过拼多多开放平台API实现社交分享功能,利用微信、QQ等社交网络提升商品曝光与销量。结合技术步骤与Python代码示例,详解注册认证、API调用、回调跟踪及优化策略,助力开发者实现销量指数级增长。
|
分布式计算 DataWorks 关系型数据库
DataWorks操作报错合集之新建MAXComputer数据源时,如何解决报错ODPS-0420095: Access Denied
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
缓存 应用服务中间件 网络安全
nginx 重写功能,防盗链功能 介绍
nginx 重写功能,防盗链功能 介绍
|
存储 前端开发 Java
汽车销售|基于SpringBoo的汽配销售平台的设计与实现
汽车销售|基于SpringBoo的汽配销售平台的设计与实现
389 1
|
Java 调度
Java显式锁-读写锁
ReentrantLock 实现了标准的互斥锁,每次最多只有一个线程持有 ReentrantLock ,从数据的完整性来看互斥是一种强硬的加锁规则
341 1
|
存储 算法 C语言
算法理论——位运算详解(&、|、^、~、>>、<<)
从现代计算机中所有的数据二进制的形式存储在设备中。即 0、1 两种状态,计算机对二进制数据进行的运算(+、-、*、/)都是叫位运算,即将符号位共同参与运算的运算。
844 0
|
IDE Java Scala
《Kotlin极简教程》第1章 Kotlin简介
第1章 Kotlin简介 《Kotlin极简教程》正式上架: 点击这里 > 去京东商城购买阅读 点击这里 > 去天猫商城购买阅读 非常感谢您亲爱的读者,大家请多支持!!!有任何问题,欢迎随时与我交流~ 1.1 kotlin简史 1.1.1 Kotlin概述 科特林岛(Котлин)是一座俄罗斯的岛屿,位于圣彼得堡以西约30公里处,形状狭长,东西长度约14公里,南北宽度约2公里,面积有16平方公里,扼守俄国进入芬兰湾的水道。
1810 0
太有才了!街头创意涂鸦手绘图片欣赏【上篇】
  传统的涂鸦艺术家一般使用油漆来实现自己的作品,“街头艺术”包含了许多其他的媒体和技术,包括:LED艺术,马赛克瓷砖,壁画,模板艺术,贴纸艺术,街头雕塑,街道装置,视频投影等等。   投影到大型城市建筑形式的涂鸦是一种新的媒体形式,越来越流行。
1295 0
|
8天前
|
云安全 人工智能 运维
当攻击全面Agent化,你的安全防御能否跟上AI Speed?
多起客户侧AK泄露事件应急的真实观察
1321 6

热门文章

最新文章