美文网首页ELK
14. Elasticsearch动态映射-1

14. Elasticsearch动态映射-1

作者: 大勇任卷舒 | 来源:发表于2022-04-07 11:06 被阅读0次

    14.1 映射

    • 类型和字段的信息存储(包含)在映射(mapping)中
      • Elasticsearch支持以下简单字段类型:

    14.2 映射规则

    • Elasticsearch将使用动态映射猜测字段类型,这类型来自于JSON的基本数据类型,使用以下规则:
    • 查看映射
    GET /gb/_mapping/tweet
    

    14.3 动态映射

    • Elasticsearch最重要的功能之一是不必首先创建index、定义映射type和定义field ,只需为文档编制index,index、type和field将自动显示:
      • 创建数据index、_doc映射type和名为count且数据type为long的field
    PUT data/_doc/1 
    { "count": 5 }
    
    • 新field的自动检测和添加称为动态映射,可以自定义动态映射规则以满足目的:
      • 动态field映射(Dynamic field mappings) ◼ 管理动态场检测的规则
      • 动态模板(Dynamic templates) ◼ 为动态添加的field配置映射的自定义规则
      • Index templates允许为automatically or explicitly创建的新索引配置默认映射、设置和别名

    14.4 动态field映射

    • 当 Elasticsearch 在文档中检测到新field时,它默认动态地将该field添加到type映射中,由dynamic参数控制此行为
    • 可以通过将dynamic参数设置为true或明确指示 Elasticsearch 根据传入的文档动态创建field runtime
      • 当启用动态field映射时,Elasticsearch 使用下表中的规则来确定如何映射每个field的数据type
    • 可以在文档和object级别禁用动态映射
      • 将dynamic参数设置为 false忽略新field,并strict在 Elasticsearch 遇到未知field时拒绝文档
    • 使用 update mapping API 更新dynamic 现有field的设置
    • 可以为 date detection 和 numeric detection自定义动态field映射规则
      • 要定义可应用于其他动态field的自定义映射规则,需使用dynamic_templates

    14.4.1 Date detection

    • 如果date_detection启用(默认),则检查新的stringfield,以查看其内容是否与动态日期格式中指定的任何日期模式匹配 dynamic_date_formats
      • 如果找到匹配项,date将添加一个具有相应格式的新日期field
    • 默认值为dynamic_date_formats:
    [ "strict_date_optional_time", "yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z"]
    
    • 例如:
    PUT my-index-000001/_doc/1
    {
    "create_date": "2015/09/02"
    }
    GET my-index-000001/_mapping
    

    14.4.2 Disabling date detection

    • 可以通过设置date_detection为禁用动态日期检测false
    PUT my-index-000001
    {
    "mappings": {
    "date_detection": false
    }}
    PUT my-index-000001/_doc/1 
    {
    "create": "2015/09/02"
    }
    

    14.4.3 Customizing detected date formats

    • dynamic_date_formats可以自定义以支持所需的 date formats:
    PUT my-index-000001
    {
    "mappings": {
    "dynamic_date_formats": ["MM/dd/yyyy"]
    }}
    PUT my-index-000001/_doc/1
    {
    "create_date": "09/25/2015"
    }
    

    14.4.4 Numeric detection

    • 虽然JSON支持本机floating point和integer data types,但某些应用程序或语言有时可能会将数字呈现为string
    • 通常正确的解决方案是显式映射这些field,但可以启用Numeric detection(默认情况下禁用)以自动执行此操作:
    PUT my-index-000001
    {
      "mappings": {
        "numeric_detection": true
      }
    }
    
    PUT my-index-000001/_doc/1
    {
      "my_float": "1.0", 
      "my_integer": "1" 
    }
    

    大数据视频推荐:
    腾讯课堂
    CSDN
    ELK入门精讲
    AIOps智能运维实战
    ELK7 stack开发运维
    大数据语音推荐:
    ELK7 stack开发运维
    企业级大数据技术应用
    大数据机器学习案例之推荐系统
    自然语言处理
    大数据基础
    人工智能:深度学习入门到精通

    相关文章

      网友评论

        本文标题:14. Elasticsearch动态映射-1

        本文链接:https://www.haomeiwen.com/subject/wzxpjrtx.html