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

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 带你读《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"
    }
  }
}
相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
存储 运维 监控
带你读《Elastic Stack 实战手册》之2:——二、导读(下)
带你读《Elastic Stack 实战手册》之2:——二、导读(下)
259 0
|
自然语言处理 索引
带你读《Elastic Stack 实战手册》之33:——3.4.2.17.2.Schemaless(上)
带你读《Elastic Stack 实战手册》之33:——3.4.2.17.2.Schemaless(上)
106 0
|
SQL 自然语言处理 监控
带你读《Elastic Stack 实战手册》之2:——二、导读(上)
带你读《Elastic Stack 实战手册》之2:——二、导读(上)
333 0
|
存储 算法 数据处理
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(2)
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(2)
122 0
|
存储 Kubernetes 数据可视化
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(4)
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(4)
115 0
|
存储 前端开发 数据可视化
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(3)
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(3)
124 0
|
存储 JSON 安全
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(1)
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(1)
144 0
|
监控 数据可视化 安全
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(5)
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(5)
117 0
|
存储 安全 数据可视化
带你读《Elastic Stack 实战手册》之3:——3.1.1.从 Elasticsearch 到 Elastic Stack(中)
带你读《Elastic Stack 实战手册》之3:——3.1.1.从 Elasticsearch 到 Elastic Stack(中)
156 0
|
数据采集 数据可视化 搜索推荐
带你读《Elastic Stack 实战手册》之3:——3.1.1.从 Elasticsearch 到 Elastic Stack(上)
带你读《Elastic Stack 实战手册》之3:——3.1.1.从 Elasticsearch 到 Elastic Stack(上)
219 0