本章节我们会简单介绍一下es的相关基础知识,可能有点枯燥,但是请耐心阅读,这个是后续我们操作的基础。
1.名词比对
我整理了一张表格,用我们更为熟悉的关系型数据库进行对比,让大家便于理解。
序号 | Es名词 | Mysql名词 |
---|---|---|
1 | index | mysql中的具体数据库 |
2 | type | mysql中的表,在es7.*的版本被抛弃,就认为一个库只有一个表即可。 |
3 | document | mysql中某个表中的某一行数据 |
4 | mapping | mysql表中的字段的类型 |
2.数据类型
Es为了方便检索,提供了丰富的数据类型,我们就对这些数据类型进行简单的介绍。
2.1 字符串类型
Text:
当一个字段需要用于全文搜索(会被分词), 比如产品名称、产品描述信息, 就应该使用text类型. text的内容会被分词,可以设置是否需要存储: “index”: “true|false”. text类型的字段不能用于排序, 也很少用于聚合.
Keyword:
当一个字段需要按照精确值进行过滤、排序、聚合等操作时,
就应该使用keyword类型,简单说就是全文匹配的词。keyword的内容不会被分词, 可以设置是否需要存储: “index”: “true|false”.
2.2 数值类型
序号 | 类型 | 说明 |
---|---|---|
1 | byte | 有符号的8位整数, 范围: [-128 ~ 127] |
2 | short | 有符号的16位整数, 范围: [-32768 ~ 32767] |
3 | integer | 有符号的32位整数, 范围: [−231−231 ~ 231231-1] |
4 | long | 有符号的64位整数, 范围: [−263−263 ~ 263263-1] |
5 | float | 32位单精度浮点数 |
6 | double | 64位双精度浮点数 |
7 | half_float | 16位半精度IEEE 754浮点类型 |
8 | scaled_float | 缩放类型的的浮点数, 比如price字段只需精确到分, 57.34缩放因子为100, 存储结果为5734 |
2.3 日期类型
date:
JSON没有日期数据类型,。
所以在ES中, 日期可以是: 包含格式化日期的字符串, “2018-10-01”, 或"2018/10/01
12:10:30". 代表时间毫秒数的长整型数字. 代表时间秒数的整数.
2.4 范围类型
范围类型常用语统计在某一个区间内的值。
比如工资序列:
初级程序员 工资在3000.00~5000.00之间。
中级程序员 工资在4000.00~7000.00之间。
如果需要统计工资在4000.00左右的岗位,则可使用范围类型。
序号 | 类型 | 说明 |
---|---|---|
1 | integer_range | −231−231 ~ 231−1231−1 |
2 | long_range | −263−263 ~ 263−1263−1 |
3 | float_range | 32位单精度浮点型 |
4 | double_range | 64位双精度浮点型 |
5 | date_range | 64位整数, 毫秒计时 |
6 | ip_range | IP值的范围, 支持IPV4和IPV6, 或者这两种同时存在 |
2.5 布尔型
可以接受表示真、假的字符串或数字。
真值: true, “true”, “on”, “yes”, “1”…
假值: false,“false”, “off”, “no”, “0”, “”(空字符串), 0.0, 0
3. 小结
本章节比较枯燥,主要是介绍es的基础数据类型,下一章节我们将通过实操,实现创建索引、设置mapping等一些操作,希望本章节能对你有所帮助。