ElasticSearch

发布于:2025-03-10 ⋅ 阅读:(17) ⋅ 点赞:(0)

目录

初识ES

认识和安装

倒排索引

IK分词器

在线安装(对网速有要求)

离线安装

测试

拓展词条

总结

基本概念

索引库操作

Mapper映射属性

索引库的CRUD

文档操作

文档CRUD

批量处理

JavaRestClient

客户端初始化

商品Mapping映射

索引库操作

文档操作

批量处理

DSL查询

快速入门

叶子查询

复合查询

排序和分页

排序

分页

深度分页问题

高亮显示

完整语法

JavaRestClient

快速入门

构建查询条件

叶子查询

全文检索查询条件

精确查询条件

复合查询

排序和分页

高亮显示

聚合

桶聚合

度量聚合

Java客户端实现


初识ES

认识和安装

安装es和Kibana

还是和之前差不多的步骤

还是选择从本地上传镜像到虚拟机root目录,再加载好

docker load -i	es.tar
docker load -i	kibana.tar

加载好再移除掉tar包(比较大,有点占空间)

rm  -rf  *.tar

run

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.1
docker 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客户端实现