1. 程式人生 > >elasticsearch摸石頭過河——常用資料型別(二)

elasticsearch摸石頭過河——常用資料型別(二)

elasticsearch資料型別

   Elasticsearch 型別是 以 Lucene 處理文件的這個方式為基礎來實現的。一個索引可以有多個型別,這些型別的文件可以儲存在相同的索引中。

   Lucene 沒有文件型別的概念,每個文件的型別名被儲存在一個叫 _type 的元資料欄位上。 當我們要檢索某個型別的文件時, Elasticsearch 通過在 _type 欄位上使用過濾器限制只返回這個型別的文件。

      注意問題:不同type中,有兩個相同的欄位名稱,這時欄位型別必須是相同的,否則會報錯!

  一,字串型別

        ElasticSearch 5.0之後,除去了字串string型別,增加了:

        text(全文搜尋)      老版本:string—>index(analyzed)

        keyword關鍵詞搜尋) 老版本:string—>index(not_analyzed)

                默認同時滿足keyword與text型別,如果做聚合或者排序,可在欄位新增keyword,做關鍵詞搜尋(long.keyword)

    二,數值型別

            long,int,short,byte,double,float

     三,日期型別(UTC時間)    1970年1月1日0時0分0秒就是UNIX時間0。

            { “date”: “2015-01-01” } 

           { “date”: “2015-01-01T12:10:30Z” } 

           { “date”: 1420070400001 } 

           ElasticSearch 內部會將日期資料轉換為UTC,並存儲為milliseconds-since-the-epoch的long型整數。 

    四,布林型別

             布林欄位接受JSON true和false值,
              但也可以接受被解釋為true或false的字串和數字:
         false值舉例:
         false,“false”,“off”,“no”,“0”,“”(空字串),0,0.0
         true值舉例:
         以上false示例的反面,一切非假值。

     五,二進位制型別

              二進位制型別接受二進位制值作為Base64編碼字串,該欄位預設不儲存,不可搜尋(意思就是隻在source欄位中儲存整個                        文件,不會單獨當成列儲存)

  六,範圍資料型別  

          integer_range :整型範圍型別;
        float_range :單精度浮點範圍型別;
        long_range :長整型範圍型別;
        double_range :雙精度範圍型別;
        date_range :時間範圍型別;
        ip_range :IP範圍型別。

        使用場景:比如前端的時間選擇表單、年齡範圍選擇表單等。 

         七,物件型別

        類似json物件

         八,陣列型別  

         必須保持型別相同