ES 解读

  先了解ES中几个名词的概念:

    1、索引

    2、类型

    3、文档

  我们从JAVA代码来看关系:

  

 

  Document:文档,搜索出来的最小单位,我们用实体类代表,跟传统表中一行数据概念类似

  type:类型,跟传统表的概念类似,包含文档。在这里要注意了,es6.x开始已经慢慢抛弃这个概念了,一个index只能有一个type,7.x开始完全摒弃!

  index:索引,一个index包含多个document,一个index代表类似或者相同的document。

  为什么要慢慢去掉type?

  可以试着想想,为了最求效率,关系型数据库是不是现在已经很少用到外键了?笔者认为是同一个道理。

  存在type,其实是与es 标题相冲突的“你知道的,为了搜索”

  以后单独一个index就代表一个库,多个document就是组成一个index的关键。这样就可以了,更好理解,更好的进行开发区分。

  在映射中,不同filed字段对应数据类型含义也根据版本有不同变化:

    text:默认会进行分词,支持模糊查询(5.x之后版本string类型已废弃,请大家使用text)。
    keyword:不进行分词;keyword类型默认开启doc_values来加速聚合排序操作,占用了大量磁盘io 如非必须可以禁用doc_values。
    number:如果只有过滤场景 用不到range查询的话,使用keyword性能更佳,另外数字类型的doc_values比字符串更容易压缩。
    array:es不需要显示定义数组类型,只需要在插入数据时用'[]'表示即可,'[]'中的元素类型需保持一致。
    range:对数据的范围进行索引;目前支持 number range、date range 、ip range。
    boolean: 只接受true、false 也可以是字符串类型的“true”、“false”
    date:支持毫秒、根据指定的format解析对应的日期格式,内部以long类型存储。
    geo_point:存储经纬度数据对。
    ip:将ip数据存储在这种数据类型中,方便后期对ip字段的模糊与范围查询。
    nested:嵌套类型,一种特殊的object类型,存储object数组,可检索内部子项。
    object:嵌套类型,不支持数组。

  

posted on 2020-03-12 16:12  Jason_LZP  阅读(195)  评论(0)    收藏  举报