• elasticsearch的映射


    一.简介:

      映射:在创建索引时,可以预先定义字段的类型(映射类型,也就是type,一个索引可以有一个或多个类型)及相关属性。

      Elasticsearch会根据JSON源数据的基础类型猜测你想要的字段映射。将输入的数据转变成可搜索的索引项。Mapping就是我们定义的字段的数据类型,同时告诉Elasticsearch如何索引数据以及是否可以被搜索。

      作用:会让索引建立的更加细致和完善。

    二.映射类型: 

      1.1 动态映射:

        字段和属性不需要预先事先定义。在你添加文档的时候,就会自动添加到索引,这个过程不需要事先在索引进行字段数据类型匹配之类,他会自己推断数据类型,动态映射是可以配置的。

      1.2 显示映射:   

        和动态映射相反,显示映射需要我们在索引映射中进行预先定义。

      1.3 更新当前映射: 

         一般我们不会改变当前的索引的映射类型和字段,因为这样,意味着废弃已经索引的文档。我们应该根据映射创建新的索引并重新索引数据。

    三.内置类型:

      1.string类型:

        text(会进行分析【分词,建立倒排索引】),keyword【不会分析,只有完全匹配才能搜索到】,(string类型在es5后已经废弃了)

      2.数字类型:

        long、integer、short、byte、double、float

      3.日期类型:

        date(可以解析date和datetime(时分秒)等日期)

      4.bool类型:

        boolean(可以解析传递过来的值,True/False/Yes/No等都能解析成bool类型)

      5.二进制数据类型:

        binary(不会被检索)

      6.复杂数据类型

         数组:无需专门的数据类型

        对象数据类型:object,单独的JSON对象

        嵌套数据类型:nested,关于JSON对象的数组

    如Company就是一个object类型

     emplyment是一个nested类型

      7.geo类型(地理数据类型):   

        地理点数据类型:geo_point,经纬点

         地理形状数据类型:geo_shape

      8.专业数据类型:

        IPv4数据类型

         完成数据类型:completion

        单词计数数据类型:token_counts

    三.数据类型可以接收的参数

      1.简单概括:

    属性 描述 适合类型
    store 值为yes表示存储,为no表示不存储,默认为no all
    index yes表示分析,no表示不分析,默认为true string
    null_value 如果字段为空,可以设置一个默认值,比如"人生" all
    analyzer 可以设置索引和搜索时用的分析器,默认使用的是standard分析器,还可以使用whitespace,simple,english all
    include_in_all 默认es为每个文档定义一个特殊域_all,它的作用是让每个字段被搜索到,如果不想让某个字段被搜索到,可以设置为false all
    format 时间格式字符串的模式 date

      2.详细:

        2.1符串可以接收的参数:

        2.2数字型可以接收的参数:

        2.3日期型可以接收的参数:

        2.4布尔型可以接收的参数:

    四.演示

      1.创建索引及映射(创建映射后无法修改): 

    PUT lagou
     {
     #参数mappings
        "mappings":
        {
     #指定表jobs
          "jobs":
          {
     #参数(中文特性,性能)
           "properties":
           {
     #指定类型为text,会分词等
            "title":{
               "type":"text"
             },
     #指定类型为integer
               "salary_min":
            {
               "type":"integer"
            },
            "city":{
     #指定类型为keyword,不分词,必须完全匹配才搜索得到
                  "type":"keyword"     
         }.
    
     #嵌套properies
           "Company":{
             "properties":{
               "name":{
                "type":"text"
               },
               "address":{
                "type":"text"
               }
            }
         },
    #date类型
         "pub-date":{
          "type":"date"
       }
       }
       }
      }
     }         

    运行成功

    查看索引信息一致

      2.数据插入:

    PUT lagou/job/1
    {
      "title":"Java后端研发",
    #这里插入时,为"20000"也行,会尝试转换为整型
      "salary_min":20000,
      "city":"北京",
      "Company":{
        "name":"百度",
        "address":"北京"
      },
      "pub_date":"2018-10-28"
    }
    PUT lagou/job/2
    {
      "title":"Python分部式爬虫",
      "salary_min":20000,
       "city":"成都",
      "Company":{
        "name":"美团",
        "address":"成都"
      },
      "pub_date":"2018-10-27"
    }
    PUT lagou/job/3
    {
      "title":"前端研发",
      "salary_min":20000,
       "city":"北京",
      "Company":{
        "name":"阿里",
        "address":"北京"
      },
      "pub_date":"2018-10-28"
    }

       3.获取mapping:

    #所有
    GET _all/_mapping
    #索引为拉钩
    GET lagou/_mapping
    #索引为lagou,type为job
    GET lagou/_mapping/job

     五.参考文献:

        https://blog.csdn.net/zhanglh046/article/details/78529208

        

     

     

  • 相关阅读:
    java的Scanner获取输入内容
    Java数据类型的转换
    Java十进制数转二进制的方法
    Java查看项目目录以及导入项目
    ios 证书申请和发布流程
    Spring 注解大全
    Spring Boot开发Web应用
    Spring Boot中Web应用的统一异常处理
    Spring Boot中使用AOP统一处理Web请求日志
    Spring Boot属性配置文件详解
  • 原文地址:https://www.cnblogs.com/lyq-biu/p/9866769.html
Copyright © 2020-2023  润新知