重要概念
倒排索引:
将文本内容进行分词,然后将分词结果放到一个表中,表左边存储分词结果,右边存储其id值。在进行分词的时候直接用词遍历这个表,就能直观拿到对应的数据。
Es核心概念:
Relational DB | Elasticsearch |
数据库(database) | 索引(indices) |
表(tables) | types(7.x版本中已经被废弃) |
行(rows) | documents |
字段(columns) | fields |
表结构 | 映射(mapping) |
数据类型
简单数据类型
文本类型
类型 | 说明 |
keyword | 不支持分词操作,支持聚合操作 |
text | 支持分词操作,不支持聚合操作。 |
数值类型
类型 | 说明 |
byte | 有符号的8位整数, 范围: [-128 ~ 127] |
short | 有符号的16位整数, 范围: [-32768 ~ 32767] |
integer | 有符号的32位整数, 范围: [−231−231 ~ 231231-1] |
long | 有符号的64位整数, 范围: [−263−263 ~ 263263-1] |
float | 32位单精度浮点数 |
double | 64位双精度浮点数 |
half_float | 16位半精度IEEE 754浮点类型 |
scaled_float | 缩放类型的的浮点数, 比如price字段只需精确到分, 57.34缩放因子为100, 存储结果为5734 |
日期类型
JSON没有日期数据类型, 所以在ES中, 日期可以是:
- 包含格式化日期的字符串, “2018-10-01”, 或"2018/10/01 12:10:30".
- 代表时间毫秒数的长整型数字.
- 代表时间秒数的整数.
范围类型
类型 | 范围 |
integer_range | −231−231 ~ 231−1231−1 |
long_range | −263−263 ~ 263−1263−1 |
float_range | 32位单精度浮点型 |
double_range | 64位双精度浮点型 |
date_range | 64位整数, 毫秒计时 |
ip_range | IP值的范围, 支持IPV4和IPV6, 或者这两种同时存在 |
其他类型
①bool:
可以接受表示真、假的字符串或数字:
真值: true, “true”, “on”, “yes”, “1”…
假值: false, “false”, “off”, “no”, “0”, “”(空字符串), 0.0, 0
②二进制
(1) doc_values
: 该字段是否需要存储到磁盘上, 方便以后用来排序、聚合或脚本查询. 接受true
和false
(默认);
(2) store
: 该字段的值是否要和_source
分开存储、检索, 意思是除了_source
中, 是否要单独再存储一份. 接受true
或false
(默认).
复杂数据类型
数组
ES中没有专门的数组类型, 直接使用[]定义即可;
数组中所有的值必须是同一种数据类型, 不支持混合数据类型的数组:
① 字符串数组: [“one”, “two”];
② 整数数组: [1, 2];
③ 由数组组成的数组: [1, [2, 3]], 等价于[1, 2, 3];
④ 对象数组: [{“name”: “Tom”, “age”: 20}, {“name”: “Jerry”, “age”: 18}].
注意:
- 动态添加数据时, 数组中第一个值的类型决定整个数组的类型;
- 不支持混合数组类型, 比如[1, “abc”];
- 数组可以包含null值, 空数组[]会被当做missing field —— 没有值的字段.
对象类型
json数据
地理位置
地理点类型用于存储地理位置的经纬度对, 可用于:
- 查找一定范围内的地理点;
- 通过地理位置或相对某个中心点的距离聚合文档;
- 将距离整合到文档的相关性评分中;
- 通过距离对文档进行排序.
思维导图
基本使用
es的文件目录中包含:bin(启动文件所在),config(配置文件所在),plugins(插件位置所在)
配置用户
①在config文件夹下修改 elasticsearch.yml,加上配置 ,然后重启es。
xpack.security.enabled: true
②在es的bin目录下,打开CMD输入
elasticsearch-setup-passwords interactive
③会显示响应的提示,根据提示输入自己的密码。
安装插件
bin目录下,CMD输入
# 安装插件
elasticsearch-plugin install [plugin_name]
# URL安装
elasticsearch-plugin install [url]
# 查看es安装的插件
elasticsearch-plugin list
或者,Es安装插件,直接将其丢在es的plugins文件目录下,如将IK分词插件的包解压丢到plugins下,命名为IK.
基础Restful
注意:
更新最好使用 post xxx/_update 这样只会更新对应的数据,而使用put会覆盖掉之前的数据。