ElasticSearch
目录
ElasticSearch
初识ES
认识和安装




安装es和Kibana
还是和之前差不多的步骤
还是选择从本地上传镜像到虚拟机root目录,再加载好
docker load -i es.tar
docker load -i kibana.tar加载好再移除掉tar包(比较大,有点占空间)
rm -rf *.tarrun
docker run -d \
--name es \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-e "discovery.type=single-node" \
-v es-data:/usr/share/elasticsearch/data \
-v es-plugins:/usr/share/elasticsearch/plugins \
--privileged \
--network hmall \
-p 9200:9200 \
-p 9300:9300 \
elasticsearch:7.12.1docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network hmall \
-p 5601:5601 \
kibana:7.12.1倒排索引

倒排索引


IK分词器

在线安装(对网速有要求)
运行一个命令即可:
docker exec -it es ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip然后重启es容器:
docker restart es离线安装
先查看有哪些数据卷:
docker volume ls
发现es容器里面的插件目录挂载好了(安装时通过数据卷挂载的)
查看一下挂载到虚拟机的哪个目录了:
docker volume inspect es-plugins
进入这个目录:
cd /var/lib/docker/volumes/es-plugins/_data创建一个ik目录,把本地的压缩包

上传到虚拟机的ik目录里,然后再解压,解压后再把压缩包删除了。
mkdir ik
unzip ***.zip
rm ****.zip重新启动es:
docker restart es测试



拓展词条

总结

基本概念



索引库操作
Mapper映射属性

这里 是否创建索引 取决于 这个字段参不参与搜索或者排序。
注:
这个举例的 es文档 的 score字段 ,如果为其创建了index索引,用于去排序,
排序规则:由于score是数组,里面有多个分数,那么去和 其它文档 根据这个字段排序的话,es会默认 选一个分数 去参与排序。
如果是升序排: 拿最小的分数去比较( 升序是小的在大的前面)
如果是降序排: 拿最大的分数去比较( 降序是大的在小的前面 )
索引库的CRUD





以上这些都是类似sql的 DDL操作 ,不是日常的curd。
文档操作
文档CRUD




批量处理

JavaRestClient
客户端初始化

商品Mapping映射
这里重点是 根据业务 去 设计索引库字段 以及其 mapper映射属性。
索引库操作



文档操作

新增文档的数据是 从数据库商品表 里取出来的。




批量处理

DSL查询

快速入门

叶子查询

全文检索查询:

精确查询:

举例:

总结

复合查询

第一类:布尔查询

排序和分页
排序

举例:

分页

深度分页问题


总结:
大多数情况下,我们 采用普通分页 就可以了。查看百度、京东等网站,会发现其分页都有限制。例如百度最多支持77页,每页不足20条。京东最多100页,每页最多60条。
因此,一般我们采用 限制分页深度的方式 即可,无需实现深度分页。
而elasticsearch会禁止
from + size
超过10000的请求。
高亮显示

完整语法

JavaRestClient
多看在线文档!!!
快速入门


构建查询条件

叶子查询
全文检索查询条件

精确查询条件

复合查询
布尔查询

举例

排序和分页

高亮显示


聚合

桶聚合

有限定范围的聚合

度量聚合

Java客户端实现

