做外贸经常用的网站,海口网络平台网站开发,武冈网络推广,阿里云虚拟主机购买ElasticSearch#xff08;一#xff09;数据类型
1.简述
Es数据类型分为基础数据类型和复杂类型数据#xff0c;掌握ES数据类型才能进一步使用ES检索数据内容。 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot…ElasticSearch一数据类型
1.简述
Es数据类型分为基础数据类型和复杂类型数据掌握ES数据类型才能进一步使用ES检索数据内容。 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-elasticsearch/artifactIdversion2.7.7/version/dependency2.基础类型
2.1.String类型
text会被分词处理用于全文检索很少用于聚合处理需要设置fielddata属性)不能用于排序keyword不可分词用于精确搜索过滤、排序、聚合等操作
1分期细粒度
在ES中存在三种模式的分词Ikik_smart 、 ik_max_word、standardes自带的。如果我们不指定分词模式则默认会执行standard语句被拆分成一个一个字。而ik_max_word是最细粒度的拆分也是ik默认的ik_smart是做最粗粒度的拆分。
举个最简单的例子对于“进口红酒”三种拆分分别是
standard进、口、红、酒
ik_smart进口、红酒
ik_max_word进口、口红、红酒
2java中映射
使用String类型需要通过Field指定String具体类型analyzer指定分词细粒度 Field(type FieldType.Text, analyzer ik_max_word)private String context;2.2.Number类型
数字类型有如下分类:
类型说明byte有符号的8位整数, 范围: [-128 ~ 127]short有符号的16位整数, 范围: [-32768 ~ 32767]integer有符号的32位整数, 范围: [−231 ~ 231-1]long有符号的64位整数, 范围: [−263 ~ 263-1]float32位单精度浮点数double64位双精度浮点数half_float16位半精度IEEE 754浮点类型scaled_float缩放类型的的浮点数, 比如price字段只需精确到分, 57.34缩放因子为100, 存储结果为5734
设置Number类型字段时候应当尽可能选择范围小的数据类型, 字段的长度越短, 索引和搜索的效率越高;优先考虑使用带缩放因子的浮点类型
1.Date类型
Date类型在Elasticsearch中以数值形式(long类型)存储。文档在索引Date类型数据时候会根据format选项来指定日期格式Elasticsearch默认解析ISO 8601格式字符串。format选项有 格式化的日期字符串 比如yyyy-MM-dd格式的2020-01-01还有ISO8601格式的2020-01-01T05:04:03Z 毫秒数 比如1584930153000 秒数 比如1584930153 多种格式混合 多个格式使用双竖线||分隔每个格式都会被依次尝试, 直到找到匹配的比如yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis
2.java中映射 Field(type FieldType.Date, format DateFormat.custom, pattern yyyy-MM-dd HH:mm:ss)JsonFormat(pattern yyyy-MM-dd HH:mm:ss, timezone GMT8)private Date endTime;2.4.Boolean类型
真值表示真值的有true,“true”, “on”, “yes”, “1”假值表示假值的有false, “false”, “off”, “no”, “0”, “”, 0.0, 0
3.复杂类型
3.1.object-对象类型
对象类型针对单个json文档
1.扁平化处理
PUT example/docs/1
{region: CN,manager: {age: 22,name: {first: 李,last: 小明}}
}用平面的结构可以用如下的来表示。
{region: CN,manager.age: 32,manager.name.first: 李,manager.name.last: 小明
}2.java中映射 Field(type FieldType.Object)private File file;Data
public class FileEntity {private String fileName;private String url;}3.2.nested嵌套类型
用于存储json对象数组嵌套类型 Nested 嵌套类型是特殊的对象类型特殊的地方是索引对象数组方式不同允许数组中的对象各自地进行索引。目的是对象之间彼此独立被查询出来。
1.扁平化处理
PUT my_index/_doc/1
{group : fans,user : [ {first : John,last : Smith},{first : Alice,last : White}]
}
// user 字段被es默认设置为object类型在es内部该json对象会被转换为如下文档。
{group : fans,user.first : [ alice, john ],user.last : [ smith, white ]
}2.java中映射 /*** 采购需求书下载文件列表*/Field(type FieldType.Nested)private ListFileEntity files;