谷粒商城实战(003 elasticSearch(es)搜索引擎)

本文详细介绍了Java项目《谷粒商城》中Elasticsearch的架构,涉及索引、文档结构、倒排索引的安装和配置,以及版本控制、数据操作(PUT、POST、DELETE)、查询方法、聚合、类型管理和数据迁移等内容,同时讲解了Docker部署和Elasticsearch的分词器定制。
摘要由CSDN通过智能技术生成

Java项目《谷粒商城》架构师级Java项目实战,对标阿里P6-P7,全网最强

总时长 104:45:00 共408P

此文章包含第102p-第p124的内容


简介

在这里插入图片描述

在这里插入图片描述

es的索引(Index)相当于mysql的database 数据库 也可以当成insert
es的类型(Type)相当于mysql的table 表
es的文档(Document)相当于mysql的table里的数据内容
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

倒排索引

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

安装 p103

es7.4.2 相当于mysql
kibana 相当于navicat sqlyog等

在这里插入图片描述
在这里插入图片描述
下载
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
看内存
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

正式上线的话 内存一般会分32G左右
这里测试 使用 初始64M 最大占用128M
在这里插入图片描述
挂载虚拟机的yml文件到外部
外部暴露地址:内部地址
**加粗样式**

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
挂载出错要添加到白名单chcon -Rt svirt_sandbox_file_t(需要挂载的文件目录)或者chmod -R 777 /mydata/elasticsearch/ 保证权限

修改权限 为777
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安装成功可以看到如下信息
在这里插入图片描述
在这里插入图片描述
ctrl + s
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

需要等待1分钟左右才能启动,太快会有下面的提示
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

保存 p106

在这里插入图片描述
在这里插入图片描述
返回 的元数据
在这里插入图片描述
再次发送的时候 返回的元数据会发生变化 如 created变成了updated 版本号也加了1
在这里插入图片描述
在这里插入图片描述

put方法必须带id 不带报405错误
在这里插入图片描述

查询 get p107

乐观锁查询时用到的两个参数
_seq_no 数据改动时会上升
_primary_term 集群时使用

_seq_no(Sequence Number):

seq_no 是文档的序列号,用于跟踪文档在分片中的顺序。
每次对文档进行更新时,seq_no 会自增,这有助于确定文档的最新版本。
在分布式环境下,seq_no 可以帮助协调来自不同节点的写入操作,确保数据的一致性。
_version:

version 是文档的版本号,用于标识文档的更新次数。
每次对文档进行更新时,version 会递增,允许应用程序检测到文档是否已经被修改。
通过版本号,可以实现乐观并发控制,避免数据冲突和丢失更新。
_primary_term:

primary_term 是主分片的代号,用于在主分片切换时维护一致性。
当主分片发生切换时,primary_term 会增加,确保正确地处理分片的变更。
这些字段在 Elasticsearch 中扮演着重要的角色,帮助确保数据的一致性、可靠性和并发控制。通过结合使用这些字段,Elasticsearch 能够有效地处理分布式环境下的数据操作,并提供强大的文档控制功能。

在这里插入图片描述

在这里插入图片描述
老版本用_version做锁 新版一般用_seq_no 做锁

put和post详细 p108

post 带_update

在这里插入图片描述

在这里插入图片描述

post 不带_update

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

删除 delete p109

在这里插入图片描述

删除完 再查询会提示未找到
在这里插入图片描述
删除索引后 整个索引下的数据都没有了 没有删除type的方法 而且新版本已经取消了type
在这里插入图片描述

批量操作

在这里插入图片描述

在这里插入图片描述

地址打不开的话,把地址里的master替换成7.4,就可以打开了。

在这里插入图片描述
在这里插入图片描述

查询的两种方法 p110

1.使用参数

在这里插入图片描述

用时
是否超时
集群分片做了什么
命中记录
在这里插入图片描述
在这里插入图片描述

hits 命中记录的一些参数
total --> value总记录数
total --> relation"eq" 类型 等于
max_score 最大得分

在这里插入图片描述

2.使用请求体

在这里插入图片描述

query 查询条件
sort 排序条件
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

from 0 代表从第一条数据开始拿
size 20 代表拿20条
跟分页一样
在这里插入图片描述
_source 查询哪几个字段
在这里插入图片描述

match 匹配查询

在这里插入图片描述

模糊查询 使用倒排索引进行快速全文检索
在这里插入图片描述

在这里插入图片描述

多字段匹配

多个字段里有一个匹配也能查出来 如:标题和详情里有 就拿出来
在这里插入图片描述

在这里插入图片描述

复合查询 bool
must必须满足才行

在这里插入图片描述

must_not 必须不匹配 如 不能有年龄38岁的

在这里插入图片描述

should 应该匹配 可以匹配 可以不匹配 匹配最好 可以加分 不匹配也没事 相当于加分项

在这里插入图片描述

must should 相关性得分都可以加分
在这里插入图片描述

查询年龄范围
在这里插入图片描述
在这里插入图片描述

结果过滤 filter 不提供相关性得分

在这里插入图片描述

term

检索精确字段 非文本字段使用term
在这里插入图片描述

在这里插入图片描述

term无法检索到文本字段 因为分词原因term很难检索到
在这里插入图片描述

query match xxx.keyword 和query match_phrase xxx

query match xxx.keyword 和query match_phrase xxx 都是将后面的数据作为一整个词进行查询
query match xxx.keyword 这只能查到一模一样的数据 相当于 sql里的等于
query match_phrase xxx 可以查到带后面 整个的词的 数据 相当于sql里的 like

keyword 不将里面的内容进行分词,text会分词
keword是精确匹配,match_phrase是模糊匹配,都不分词
在这里插入图片描述

aggregations执行聚合

在这里插入图片描述
在这里插入图片描述

各种聚合类型 如 avg(平均值),term(值集合) 相当于sql里的聚合函数
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

size等于0的时候只看聚合结果 数据hits不展示
在这里插入图片描述

子聚合

先按年龄进行分布 然后再在这些年龄里进行聚合查询
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

三层聚合
这个操作类似于Stream流,习惯了用着还可以

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

ES7移除了type,因为同一个索引下 不同type里同名的时候会影响查询效率

在这里插入图片描述

映射

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

创建字段

text和keyword的区别
keyword 不会进行全文检索 进行精确匹配
text会进行分词从而进行全文检索
在这里插入图片描述
这里创建了一个索引,并且去掉了type 直接是索引下面就是字段
在这里插入图片描述

新增字段

在这里插入图片描述
直接加不行 会报错
在这里插入图片描述

在这里插入图片描述

index是false的时候 是不会被索引到的 相当于查询的时候不去查它
在这里插入图片描述

更新映射

如果一个映射已经添加了 就不能更新这个映射,如修改类型等
如果想修改映射,就需要 重新建立一个新的索引,并将之前的数据进行迁移

在这里插入图片描述

在这里插入图片描述

数据迁移

把之前的进行复制,并且修改后进行操作
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
迁移并且去掉type
在这里插入图片描述
type全部变成_doc
在这里插入图片描述

在这里插入图片描述

分词

在这里插入图片描述
使用standard分词器进行分词
在这里插入图片描述
由于默认的standard分词器拆分中文有歧义 所以需要安装中文分词器,这里使用开源的ik分词器
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

之前映射过
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
进入docker 容器

docker ps    #查看

docker exec -it  xxxxx /bin/bash   #进入

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

查看已经安装好的插件
在这里插入图片描述

在这里插入图片描述

重启es
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

网络配置

设置网关和dns 以及备用dns
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

自定义分词器

在这里插入图片描述

在这里插入图片描述

删除之前的容器并重新生成一个新的

删除 由于之前的数据源映射到了外部 所以新生成的es容器的数据不会丢失
在这里插入图片描述
在这里插入图片描述

重新创建

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

修改ik分词器的配置文件

在这里插入图片描述
在这里插入图片描述

改完之后记得重启
在这里插入图片描述
在这里插入图片描述

设置自动启动
在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值