• Elasticsearch 动态映射——自动检测


    ES中有一个非常重要的特性——动态映射,即索引文档前不需要创建索引、类型等信息,在索引的同时会自动完成索引、类型、映射的创建。

    那么什么是映射呢?映射就是描述字段的类型、如何进行分析、如何进行索引等内容。

    本篇就着重讲述下,ES中映射的自动检测特性。

    更多内容参考:Elastisearch知识总结

    字段自动检测

    在某个字段第一次出现时,如果之前没有定义过映射,ES会自动检测它可能满足的类型,然后创建对应的映射。

    JSON数据

    ES中的数据类型

    null

    不会添加字段

    true or false

    boolean

    floating point number

    double

    integer

    long

    object

    object

    array

    依赖于第一个非null得值

    string

    如果通过了date检测,则为date

    如果通过了numeric检测,则为Number

    上面就是类型自动检测的结果,除了上面列出的基本类型,其他的高级的类型比如geo,ip就需要手动指定了。

    日期自动检测

    日期自动检测,即date_detection是默认开启的,因此只要符合默认的日期格式,就可以自动创建成date类型

    日期的格式为:

    [ "strict_date_optional_time","yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z"]

    例如:

    $ curl -XPUT localhost:9200/test/test/1 -d '{"create":"2015/11/11"}'
    {"_index":"test","_type":"test","_id":"1","_version":1,"created":true}
    
    $ curl -XGET localhost:9200/test/_mapping?pretty
    {
      "test" : {
        "mappings" : {
          "test" : {
            "properties" : {
              "create" : {
                "type" : "date",
                "format" : "yyyy/MM/dd HH:mm:ss||yyyy/MM/dd"
              }
            }
          }
        }
      }
    }

    可以通过修改dynamic_date_formats 修改日期格式:

    PUT my_index
    {
        "mappings":{
            “my_type":{"dynamic_date_formats":["MM/dd/yyyy"]}
        }
    }
    
    PUT my_index/my_type/1{"create_date":"09/25/2015"}

    数字自动检测

    数字自动检测,即numeric_detection默认是关闭的。因此需要手动打开:

    PUT my_index
    {"mappings":{"my_type":{"numeric_detection":true}}}

    当执行索引操作时,如果符合float型,就会自动创建为float

    long型也是一样:

  • 相关阅读:
    分享网页相关好用小工具
    【转】Expire Google Drive Files 让Google Docs云盘共享连接在指定时间后自动失效
    习题 5: 更多的变量和打印 | 笨办法学 Python
    笨办法学 Python (Learn Python The Hard Way)
    【转】pycharm快捷键、常用设置、包管理
    ArcGIS学习推荐
    WPF 单实例应用程序
    推荐一个 HTML5在线的流程图工具——ProcessOn
    WPF Expander控件(扩展面板)
    WPF 的拖拽操作(DragDrop)
  • 原文地址:https://www.cnblogs.com/xing901022/p/5011501.html
Copyright © 2020-2023  润新知