电商项目——全文检索-ElasticSearch——第一章——中篇
电商项目——商城业务-商品上架——第二章——中篇
电商项目——商城业务-首页——第三章——中篇
电商项目——性能压测——第四章——中篇
电商项目——缓存——第五章——中篇
电商项目——商城业务-检索服务——第六章——中篇
电商项目——商城业务-异步——第七章——中篇
电商项目——商品详情——第八章——中篇
电商项目——认证服务——第九章——中篇
电商项目——购物车——第十章——中篇
电商项目——消息队列——第十一章——中篇
电商项目——订单服务——第十二章——中篇
电商项目——分布式事务——第十三章——中篇
文章目录
- 1:简介
- 2:Docker安装ES-存储和检索数据
- 3:Docker安装Kibana-可视化检索数据
- 4:入门-_cat
- 5:入门-put&post新增数据
- 6:入门-get查询数据&乐观锁字段
- 7:入门-put&post修改数据
- 8:入门-删除数据&bulk批量操作导入样本测试数据
- 9:进阶-两种查询方式
- 10:进阶-QueryDSL基本使用&match_all
- 11:进阶-match全文检索
- 12:进阶-match_phrase短语匹配
- 13:进阶-multi_match多字段匹配
- 14:进阶-bool复合查询
- 15:进阶-filter过滤
- 16:进阶-term查询
- 17:进阶-aggregations聚合分析
- 18:映射-mapping创建
- 19:添加新的字段映射
- 20:修改映射&数据迁移
- 21:分词-分词&安装ik分词
- 22:SpringBoot整合hign-level-client
- 23:整合-测试保存
- 24:整合-测试复杂检索
1:简介
电商项目所有的检索功能都是用ElasticSearch构建起来的,全文检索的数据都是来自mysql,以后我们要把mysql的数据给ES存储一份,这样ES才可以将数据检索出来
lasticSearch——ElasticSearch和Kibana介绍
- Elasticsearch是一个分布式的、RESTful的搜索和分析引擎,能够解决越来越多的用例。作为弹性堆栈的核心,它集中存储数据,以便您可以发现预期的数据和发现意外的数据。
ElassticSearch的数据默认放在内存中(进行分析检索是非常快的)
2:Docker安装ES-存储和检索数据
Docker下安装Redis和Mysql,elasticsearch,Kibana,nginx——简洁篇
我在使用Vagrant中拉取ES镜像报如下错误
结果分析发现是 /var/lib/docker/overlay2/路径下的联合目录挂载文件系统,满了
& df -hl
#查看存储分布情况
以下的博客对我理解上面的问题有一定的帮助
docker的overlay2笔记
/var/lib/docker/overlay2 占用很大,清理Docker占用的磁盘空间,迁移 /var/lib/docker 目录
sda, sdb, sdc, sda1, sda2在Linux中都代表什么
最终的解决办法,我就只可重新安装一遍虚拟机
如下是在docker中查找镜像的位置和容器所在位置的命令
docker查看镜像仓库的位置
3:Docker安装Kibana-可视化检索数据
Docker下安装Redis和Mysql,elasticsearch,Kibana,nginx——简洁篇
4:入门-_cat
ES作为存储分析检索的一个引擎,我们先来体会它的存储功能,先来对它进行增删改查,在进行这个之前,我们先来体会一下_cat,我们说对所有的ES操作,ES都封装成了API发送请求进行,我们就使用postman进行如下测试
GET:http://192.168.56.10:9200/_cat/nodes
127.0.0.1 60 95 0 0.00 0.04 0.05 dilm * 5f28b7a757f5
GET:http://192.168.56.10:9200/_cat/health
1603399251 20:40:51 elasticsearch green 1 1 0 0 0 0 0 0 - 100.0%
GET:http://192.168.56.10:9200/_cat/master
08ZJHzRhQzipECG4ADz0mg 127.0.0.1 127.0.0.1 5f28b7a757f5
GET:http://192.168.56.10:9200/_cat/indices
#装好了kibnana,也会给es中存储一些kibana一些节点信息
green open .kibana_task_manager_1 1CyCbE1ETFOFC7se-K1T9Q 1 0 2 0 38.2kb 38.2kb
green open .apm-agent-configuration wQZkBe1bRgu7bJW28RDNhg 1 0 0 0 283b 283b
green open .kibana_1 qKYKuXT_S86Zdtlj6H3u8A 1 0 5 0 18.3kb 18.3kb
5:入门-put&post新增数据
#发送多次是一个更新操作
PUT:http://192.168.56.10:9200/customer/external/1
{
"name":"zlj"
}
{
"_index": "customer", #在哪个索引下(数据库)被创建
"_type": "external", #在哪个类型下(表)被创建
"_id": "1", #数据id
"_version": 1, #版本号(不断叠加过程)
"result": "created",
"_shards": { # 分片(集群用到)
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 1
}
PUT:http://192.168.56.10:9200/customer/external/1
{
"name":"zlj"
}
{
"_index": "customer",#在哪个索引下(数据库)被创建
"_type": "external", #在哪个类型下(表)被创建
"_id": "1", #数据id
"_version": 2, #版本号(不断叠加过程)
"result": "updated",
"_shards": { # 分片(集群用到)
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 1,
"_primary_term": 1
}
我们在使用_cat查找索引发现,customer被成功添加
GET:http://192.168.56.10:9200/_cat/indices
green open .kibana_task_manager_1 1CyCbE1ETFOFC7se-K1T9Q 1 0 2 0 38.2kb 38.2kb
green open .apm-agent-configuration wQZkBe1bRgu7bJW28RDNhg 1 0 0 0 283b 283b
green open .kibana_1 qKYKuXT_S86Zdtlj6H3u8A 1 0 5 0 18.3kb 18.3kb
yellow open customer w3rhRLUsTWWx_lC_XN08LQ 1 1 1 0 3.3kb 3.3kb
#不指定id,会自动生成id。指定了id就会修改这个数据
POST:http://192.168.56.10:9200/customer/external
{
"name":"zlj"
}
{
"_index": "customer", #在哪个索引下(数据库)被创建
"_type": "external", #在哪个类型下(表)被创建
"_id": "sWomU3UBynfGwnzRowT3", #数据id
"_version": 1, #版本号(不断叠加过程)
"result": "created", # 分片(集群用到)
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 3,
"_primary_term": 1
}
6:入门-get查询数据&乐观锁字段
GET:http://192.168.56.10:9200/customer/external/1
{
"_index": "customer",#在哪个索引下(数据库)被创建
"_type": "external", #在哪个类型下(表)被创建
"_id": "1", #数据id
"_version": 3, #版本是3说明更新过两次,第一次创建是1
"_seq_no": 2, #并发控制字段,每次更新就会+1,用来做乐观锁
"_primary_term": 1, #同上,主分片重新分配,如重启就会发生变化
"found": true,
"_source": {
"name": "zlj"
}
}
比如A看到这个数据是1,B,C,D看到的也都是1,这个时候,A想把1改成2,B想把1改成3,C想把1改成4,D想把1改成5,这个时候如果B先到达es,A后到达es(A的本意是想把1改成2的,如果是别的值就算了),这个时候我们就可以使用乐观锁,