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:嵌套类型,不支持数组。
浙公网安备 33010602011771号