User-Profile-Image
hankin
  • 5
  • Java
  • Kotlin
  • Spring
  • Web
  • SQL
  • MegaData
  • More
  • Experience
  • Enamiĝu al vi
  • 分类
    • Zuul
    • Zookeeper
    • XML
    • WebSocket
    • Web Notes
    • Web
    • Vue
    • Thymeleaf
    • SQL Server
    • SQL Notes
    • SQL
    • SpringSecurity
    • SpringMVC
    • SpringJPA
    • SpringCloud
    • SpringBoot
    • Spring Notes
    • Spring
    • Servlet
    • Ribbon
    • Redis
    • RabbitMQ
    • Python
    • PostgreSQL
    • OAuth2
    • NOSQL
    • Netty
    • MySQL
    • MyBatis
    • More
    • MinIO
    • MegaData
    • Maven
    • LoadBalancer
    • Kotlin Notes
    • Kotlin
    • Kafka
    • jQuery
    • JavaScript
    • Java Notes
    • Java
    • Hystrix
    • Git
    • Gateway
    • Freemarker
    • Feign
    • Eureka
    • ElasticSearch
    • Docker
    • Consul
    • Ajax
    • ActiveMQ
  • 页面
    • 归档
    • 摘要
    • 杂图
    • 问题随笔
  • 友链
    • Spring Cloud Alibaba
    • Spring Cloud Alibaba - 指南
    • Spring Cloud
    • Nacos
    • Docker
    • ElasticSearch
    • Kotlin中文版
    • Kotlin易百
    • KotlinWeb3
    • KotlinNhooo
    • 前端开源搜索
    • Ktorm ORM
    • Ktorm-KSP
    • Ebean ORM
    • Maven
    • 江南一点雨
    • 江南国际站
    • 设计模式
    • 熊猫大佬
    • java学习
    • kotlin函数查询
    • Istio 服务网格
    • istio
    • Ktor 异步 Web 框架
    • PostGis
    • kuangstudy
    • 源码地图
    • it教程吧
    • Arthas-JVM调优
    • Electron
    • bugstack虫洞栈
    • github大佬宝典
    • Sa-Token
    • 前端技术胖
    • bennyhuo-Kt大佬
    • Rickiyang博客
    • 李大辉大佬博客
    • KOIN
    • SQLDelight
    • Exposed-Kt-ORM
    • Javalin—Web 框架
    • http4k—HTTP包
    • 爱威尔大佬
    • 小土豆
    • 小胖哥安全框架
    • 负雪明烛刷题
    • Kotlin-FP-Arrow
    • Lua参考手册
    • 美团文章
    • Java 全栈知识体系
    • 尼恩架构师学习
    • 现代 JavaScript 教程
    • GO相关文档
    • Go学习导航
    • GoCN社区
    • GO极客兔兔-案例
    • 讯飞星火GPT
    • Hollis博客
    • PostgreSQL德哥
    • 优质博客推荐
    • 半兽人大佬
    • 系列教程
    • PostgreSQL文章
    • 云原生资料库
    • 并发博客大佬
Help?

Please contact us on our email for need any support

Support
    首页   ›   MegaData   ›   ElasticSearch   ›   正文
ElasticSearch

ElasticSearch—映射模版(十三)

2021-01-05 22:35:49
722  0 0
参考目录 隐藏
1) match_mapping_type(匹配映射类型)
2) match and unmatch(匹配和不匹配)
3) match_pattern(模式匹配)
4) path_match and path_unmatch(路径匹配和不匹配路径)
5) {name} and {dynamic_type}占位符

阅读完需:约 3 分钟

动态模板允许你定义可以用于动态添加的字段的自定义映射:

  • 由Elasticsearch中的match_mapping_type检测到数据类型。
  • 字段的名称可以是match(匹配)和unmatch(不匹配)或match_pattern(模式匹配)。
  • 全点路径的字段可以是path_match(路径匹配)和path_unmatch(不匹配路径)。

动态模板是指定为命名对象的一个数组:

"dynamic_templates": [
{ 
"my_template_name": {                 #1
 ... match conditions ...             #2 
"mapping": { ... }                    #3
} 
}, 
... 
]

模板按顺序进行处理-第一个匹配模板达到要求。可以使用PUT mapping API将新的模板附加到列表的尾部。如果新的模板与现有的模板同名,它将会替换旧的版本。

match_mapping_type(匹配映射类型)

match_mapping_type通过动态字段映射检测数据类型的匹配,换句话说,就是Elasticsearch认为该字段应该具有的数据类型。

只能自动检测以下数据类型:boolean(布尔类型),date(日期),double(浮点型),long(长整型),object(对象类型),string(字符类型)。同时,它也接受*来匹配所有数据类型。

match and unmatch(匹配和不匹配)

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

以上两个的例子:

PUT blog
{
  "mappings": {
    "dynamic_templates":[
      {
        "longandinteger":{
          "match_mapping_type":"long",
          "mapping":{
            "type":"integer"
          }
        }
      }
      ]
  }
}

PUT blog/_doc/1
{
  "count":99
}

将long类型的映射成了integer类型

PUT blog
{
  "mappings": {
    "dynamic_templates":[
      {
        "stringandinteger":{
          "match_mapping_type":"string",
          "match":"num_*",
          "unmatch":"*_text",
          "mapping":{
            "type":"integer"
          }
        }
      }
      ]
  }
}

PUT blog/_doc/1
{
  "num_count":"8888",
  "num_text":"java"
}

num_aaa,还是long类型,因为它一开始就没有进入判断

PUT blog/_doc/2
{
  "num_count":"8888",
  "num_text":"java",
  "num_aaa":8999
}

match_pattern(模式匹配)

match_pattern参数调整match参数的行为,使其在字段名称上支持匹配完整的Java正则表达式,而不是简单的通配符,例如:

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

path_match and path_unmatch(路径匹配和不匹配路径)

path_match和path_unmatch参数的工作方式与match和unmathc相同,但是字段运行在完整的路径上,而不仅仅是最终的名称

例如:some_object.*.some_field。

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

PUT my_index
{
  "mappings": {
    "my_type": {
      "dynamic_templates": [
        {
          "full_name": {
            "path_match":   "name.*",
            "path_unmatch": "*.middle",
            "mapping": {
              "type":       "text",
              "copy_to":    "full_name"
            }
          }
        }
      ]
    }
  }}

PUT my_index/my_type/1{
  "name": {
    "first":  "Alice",
    "middle": "Mary",
    "last":   "White"  }}

{name} and {dynamic_type}占位符

在映射中{name}和{dynamic_type}占位符会被替换为字段名称和检测到的动态类型。

以下示例将所有的字符串类型设置为使用与该字段名称相同的analyzer(分析器),并禁用所有非字符串字段的doc_values:

PUT my_index
{
  "mappings": {
    "my_type": {
      "dynamic_templates": [
        {
          "named_analyzers": {
            "match_mapping_type": "string",
            "match": "*",
            "mapping": {
              "type": "text",
              "analyzer": "{name}"
            }
          }
        },
        {
          "no_doc_values": {
            "match_mapping_type":"*",
            "mapping": {
              "type": "{dynamic_type}",
              "doc_values": false
            }
          }
        }
      ]
    }
  }}

PUT my_index/my_type/1{

  "english": "Some English text",            #1
  "count":   5 }                             #2

english字段通过english分析器映射为string(字符串)字段。 count字段通过禁用的doc_values映射为long(长整型)字段。

更多查看文档:

http://doc.codingdict.com/elasticsearch/342/

如本文“对您有用”,欢迎随意打赏作者,让我们坚持创作!

0 打赏
Enamiĝu al vi
不要为明天忧虑.因为明天自有明天的忧虑.一天的难处一天当就够了。
543文章 68评论 289点赞 573645浏览

随机文章
SpringSecurity—自动踢掉前一个登录用户
4年前
Java—并发编程(二)synchronized关键字
4年前
Java—并发编程(七)JUC集合 – (9) LinkedBlockingDeque
3年前
SpringSecurity—防御 CSRF 攻击
4年前
ActiveMQ—整合Spring
5年前
博客统计
  • 日志总数:543 篇
  • 评论数目:68 条
  • 建站日期:2020-03-06
  • 运行天数:1890 天
  • 标签总数:23 个
  • 最后更新:2024-12-20
Copyright © 2025 网站备案号: 浙ICP备20017730号 身体没有灵魂是死的,信心没有行为也是死的。
主页
页面
  • 归档
  • 摘要
  • 杂图
  • 问题随笔
博主
Enamiĝu al vi
Enamiĝu al vi 管理员
To be, or not to be
543 文章 68 评论 573645 浏览
测试
测试
看板娘
赞赏作者

请通过微信、支付宝 APP 扫一扫

感谢您对作者的支持!

 支付宝 微信支付