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对象

         八,数组类型  

         必须保持类型相同

 

猜你喜欢

转载自www.cnblogs.com/10fly/p/9928888.html