对elasticsearch的实际应用

有业务需求,要做一个搜索接口,从千万的数据中根据筛选项查到需要的数据
筛选项有
1.学段。高中,初中等
2.学科。数学,语文等
3.专区。同步专区,高考专区等
4.试卷类型。月考卷,期中考试卷等
5.年级。高一,高二等
6.年份。
7.地区。
8.文档类型。doc,zip,pdf等
9.范围。
10.是否解析。
在这里插入图片描述
做的模块是新模块,叫试卷大全,旧模块叫优选卷库和名校试卷。试卷大全中需要包含这两个旧模块的数据。因此,需要做旧模块的标签和新模块的标签映射关系。
映射关系中,包括年级、旧标签、关键字(根据关键字去名称中查询),排除关键字(名称中有排除关键字的就去除掉)。根据这四个去查询老数据。
规则是:旧标签和关键字的查询是一个或的关系,排除关键字在整个查询老数据的逻辑里生效(即包含排除关键字的资源均去除)。
下面是搜索老数据的逻辑
在这里插入图片描述

两个tips
1.用should去查询的时候,should里面一定不能包含一个空should条件,否则这个should查询会一直生效
比如BoolQueryBuilder shouldQueryBuilder = QueryBuilders.boolQuery();
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
如果shouldQueryBuilder.should(queryBuilder);但是queryBuilder里面没有任何查询条件,那shouldQueryBuilder会一直生效。
2.想should查询1和should查询2是一个must查询的关系(或者说一个must查询中包两个should查询),需要先弄一个BoolQueryBuilder mustQueryBuilder = QueryBuilders.boolQuery();然后mustQueryBuilder.must(“should查询1”);mustQueryBuilder.must(“should查询2”);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值