1. 程式人生 > >elasticsearch的映射

elasticsearch的映射

添加 alt 數字 string類 性能 關於 指定 tro put

一.簡介:

  映射:在創建索引時,可以預先定義字段的類型(映射類型,也就是type,一個索引可以有一個或多個類型)及相關屬性。

  Elasticsearch會根據JSON源數據的基礎類型猜測你想要的字段映射。將輸入的數據轉變成可搜索的索引項。Mapping就是我們定義的字段的數據類型,同時告訴Elasticsearch如何索引數據以及是否可以被搜索。

  作用:會讓索引建立的更加細致和完善。

二.映射類型: 

  1.3 動態映射:

    字段和屬性不需要預先事先定義。在你添加文檔的時候,就會自動添加到索引,這個過程不需要事先在索引進行字段數據類型匹配之類,他會自己推斷數據類型,動態映射是可以配置的。

  1.4 顯示映射:   

    和動態映射相反,顯示映射需要我們在索引映射中進行預先定義。

  1.5 更新當前映射: 

    一般我們不會改變當前的索引的映射類型和字段,因為這樣,意味著廢棄已經索引的文檔。我們應該根據映射創建新的索引並重新索引數據。

三.內置類型:

  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

    

 

elasticsearch的映射