视频学习链接:https://www.bilibili.com/video/BV1hh411D7sb
基础知识
Elastic search:
- 开源的高扩展的分布式全文搜索引擎,整个ES技术栈的核心。
- 近乎实时的存储、检索数据
- 扩展性好,可扩展上百台服务器,处理PB级别的数据
- 基于Lucene开发(Lucene提供了全文检索的能力,但是没有办法直接使用)
入门(mac版本)
官网下载地址:https://www.elastic.co/cn/downloads/elasticsearch
启动:
通过终端进入到目录 elasticsearch-7.13.2/bin 下,执行 命令 sh elasticsearch 或者 ./elasticsearch,即可启动成功
部分启动日志
浏览器访问出现图中结果即表示启动成功(注意不要重复启动):
停止
可以通过杀掉进程号的方式,停止es
ps -ef |grep elastic
kill -9 93467
http方式使用ES
语法官方使用文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html?baymax=rec&rogue=pop-1&elektra=docs
使用postman创建
索引就等同于数据库,文档相当于表
动作 | 请求方式 | 地址 | 参数 | 幂等性 | 备注 |
创建索引 | PUT | Y | |||
查看索引 | GET | Y | |||
删除索引 | DELETE | Y | |||
查看所有索引 | GET | Y | |||
创建索引下的文档 | POST | {“name”:“小米手机”,“category”:“小米”,“price”:1000.00} | N | 相同文档可存储多次,每次响应的id不同 | |
创建索引下的文档(自定义id) | POST | {“name”:“小米手机”,“category”:“小米”,“price”:1000.00} | N | PUT也可以(多次请求id不变,但是version会变,类似于修改了内容) | |
获取shoping下的所有数据 | GET | Y | |||
完全修改数据 | PUT | {“name”:“小米手机”,“category”:“小米”,“price”:4000.00} | N | ||
修改部分数据 | POST | {“doc”:{“name”:“华为手机”}} | Y | 请求多次version并没有增加 | |
条件查询 | GET | 路径拼参数 | |||
条件查询 | GET | {“query”:{“match”:{“category”:“小米”}}} | 请求体拼参数 | ||
分页查询 | GET | {“query”:{“match_all”:{}},“from”:0,“size”:2} | from:页码,计算公式:(页码-1)*每页数据条数;size:每页数据条数 | ||
查询:指定显示内容 | GET | {“query”:{“match_all”:{}},“from”:0,“size”:2,"_source":[“name”,“price”]} | |||
排序查询 | GET | {“query”:{“match_all”:{}},"_source":[“name”,“price”],“sort”:{“price”:{“order”:“asc”}}} | 排序的价格必须是 数字 | ||
连接查询 and | GET | {“query”:{“bool”:{“must”:[{“match”:{ “category”:“小米”}},{“match”:{“price”:1000.00}}]}}} | must | ||
连接查询 or | GET | {“query”:{“bool”:{“should”:[{“match”:{ “category”:“小米”}},{“match”:{“price”:1000.00}}]}}} | should | ||
范围查询 | GET | {“query”:{“bool”:{“should”:[{“match”:{ “category”:“小米”}},{“match”:{“price”:1000.00}}],“filter”:{“range”:{“price”:{“gt”:4000.00}}}}}} | filter | ||
全文关键词检索 | GET | {“query”:{“match_phrase”:{“category”:“小米”}}} | 关键词查询,不对查询条件做分词处理 | ||
检索结果高亮显示 | GET | {“query”:{“match_phrase”:{“category”:“小米”}},“highlight”:{“fields”:{“category”:{}}}} | 返回结果增加了html样式 | ||
聚合查询:分组 | {“aggs”:{“price_group”:{“terms”:{“field”:“price”}}}} | aggs 表示聚合查询;price_group 分组名称 自定义;terms 分组。结果会根据字段分组 | |||
聚合查询:平均值 | {“aggs”:{“price_avg”:{“avg”:{“field”:“price”}}}} | avg 求字段平均值 | |||
http 创建索引映射 | {“properties”:{“name”:{“type”:“text”,“index”:true},“sex”:{“type”:“keyword”,“index”:true},“tel”:{“type”:“keyword”,“index”:false}}} | properties 索引配置;name 文档字段;type:“text” 字段类型;index 是否给此字段创建索引;keyword 关键字,即不对此属性做分词处理 |