提交 c78bddff 作者: yanxin

已入库数据检索支持查询发布时间为空的数据

上级 4b08e8ba
......@@ -1976,6 +1976,12 @@ public class EsService {
* @date 2024/12/25
*/
private BoolQueryBuilder buildQuery(InfoDataSearchCondition searchCondition, List<String> subjectIdList) {
//判断是否需要查询发布时间为空的数据
boolean timeFlag = false;
if(StringUtils.isEmpty(searchCondition.getStartTime()) && StringUtils.isEmpty(searchCondition.getEndTime())) {
//前端没有穿时间参数时,需要查询发布时间为空的数据
timeFlag = true;
}
//创建查询对象
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
if (CollectionUtils.isNotEmpty(subjectIdList)) {
......@@ -2012,13 +2018,14 @@ public class EsService {
}
}
//时间过滤筛选-专题配置
if (StringUtils.isNotBlank(configStartTime)) {
boolQuery.filter(QueryBuilders.rangeQuery("publishDate").gte(EsDateUtil.esFieldDateFormat(configStartTime)));
if (StringUtils.isNotEmpty(configStartTime) && (StringUtils.isEmpty(searchCondition.getStartTime())||configStartTime.compareTo(searchCondition.getStartTime())>0)) {
searchCondition.setStartTime(configStartTime);
}
if (StringUtils.isNotBlank(configEndTime)) {
boolQuery.filter(QueryBuilders.rangeQuery("publishDate").lte(EsDateUtil.esFieldDateFormat(configEndTime)));
} else {
boolQuery.filter(QueryBuilders.rangeQuery("publishDate").lte(EsDateUtil.esFieldDateFormat(DateUtil.dateToString(new Date()))));
if(StringUtils.isEmpty(configEndTime)){
configEndTime = EsDateUtil.esFieldDateFormat(DateUtil.dateToString(new Date()));
}
if (StringUtils.isEmpty(searchCondition.getEndTime())||configEndTime.compareTo(searchCondition.getEndTime())<0) {
searchCondition.setEndTime(configEndTime);
}
}
}
......@@ -2109,13 +2116,23 @@ public class EsService {
boolQuery.filter(QueryBuilders.rangeQuery("score").lte(maxScore));
}
//时间过滤筛选-前端传参
if (StringUtils.isNotBlank(searchCondition.getStartTime())) {
boolQuery.filter(QueryBuilders.rangeQuery("publishDate").gte(EsDateUtil.esFieldDateFormat(searchCondition.getStartTime())));
}
if (StringUtils.isNotBlank(searchCondition.getEndTime())) {
boolQuery.filter(QueryBuilders.rangeQuery("publishDate").lte(EsDateUtil.esFieldDateFormat(searchCondition.getEndTime())));
} else {
boolQuery.filter(QueryBuilders.rangeQuery("publishDate").lte(EsDateUtil.esFieldDateFormat(DateUtil.dateToString(new Date()))));
if(StringUtils.isEmpty(searchCondition.getStartTime()) && StringUtils.isEmpty(searchCondition.getEndTime())){
BoolQueryBuilder publishDateQueryBuilder = QueryBuilders.boolQuery();
BoolQueryBuilder configDateQueryBuilder = QueryBuilders.boolQuery();
//时间过滤筛选-专题配置
if (StringUtils.isNotBlank(searchCondition.getStartTime())) {
configDateQueryBuilder.must(QueryBuilders.rangeQuery("publishDate").gte(EsDateUtil.esFieldDateFormat(searchCondition.getStartTime())));
}
if (StringUtils.isNotBlank(searchCondition.getEndTime())) {
configDateQueryBuilder.must(QueryBuilders.rangeQuery("publishDate").lte(EsDateUtil.esFieldDateFormat(searchCondition.getEndTime())));
} else {
configDateQueryBuilder.must(QueryBuilders.rangeQuery("publishDate").lte(EsDateUtil.esFieldDateFormat(DateUtil.dateToString(new Date()))));
}
publishDateQueryBuilder.should(configDateQueryBuilder);
if(timeFlag){
publishDateQueryBuilder.should(QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery("publishDate")));
}
boolQuery.must(publishDateQueryBuilder);
}
String crawler = searchCondition.getCrawler();
if (StringUtils.isNotBlank(crawler)) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论