当前位置: 首页 > news >正文

Elasticsearch同时使用should和must

问题及解决方法

must和should组合查询,should失效。使用must嵌套查询,将should组成的bool查询包含在其中一个must查询中。

SearchRequest request = new SearchRequest();
request.indices("function_log");SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
if (StringUtils.hasText(schoolName)) {boolQueryBuilder.must(QueryBuilders.termQuery("schoolName.keyword", schoolName));
}
if (StringUtils.hasText(typeFunction)) {boolQueryBuilder.must(QueryBuilders.termQuery("typeFunction.keyword", typeFunction));
}
if (StringUtils.hasText(startTime) && StringUtils.hasText(endTime)) {boolQueryBuilder.must(QueryBuilders.rangeQuery("createDate").gte(startTime + "T00:00:00.000Z").lte(endTime + "T23:59:59.000Z"));
}
BoolQueryBuilder shouldQuery = QueryBuilders.boolQuery();
shouldQuery.should().add(QueryBuilders.termQuery("description.keyword","查询学生信息表"));
shouldQuery.should().add(QueryBuilders.termQuery("description.keyword","获取学校访客数据"));
boolQueryBuilder.must(shouldQuery);sourceBuilder.query(boolQueryBuilder);
request.source(sourceBuilder);
System.out.println(sourceBuilder.toString());

在这里插入图片描述

GET /function_log/_search
{"query": {"bool": {"must": [{"term": {"schoolName.keyword": {"value": "测试学校","boost": 1}}},{"term": {"typeFunction.keyword": {"value": "教师端功能","boost": 1}}},{"range": {"createDate": {"from": "2023-08-01T00:00:00.000Z","to": "2023-08-07T23:59:59.000Z","include_lower": true,"include_upper": true,"boost": 1}}},{"bool": {"should": [{"term": {"description.keyword": {"value": "查询学生信息表","boost": 1}}},{"term": {"description.keyword": {"value": "获取学校访客数据","boost": 1}}}],"adjust_pure_negative": true,"boost": 1}}],"adjust_pure_negative": true,"boost": 1}}
}
http://www.lryc.cn/news/117707.html

相关文章:

  • 羽毛球热身和拉伸
  • 使用 Vue 实现页面访问拦截
  • 使用webpack建立React+TS项目
  • 法律监督大数据平台有什么作用?
  • 根据制定的长度切割list值
  • AES加密(1):AES基础知识和计算过程
  • Nginx启动报错- Failed to start The nginx HTTP and reverse proxy server
  • 五、web应用程序技术——web功能
  • AutoDL服务器的镜像版本太高,配置python3.7 tensorflow1.15版本的框架的步骤
  • c++ boost库之scoped_ptr,shared_ptr,weak_ptr智能指针
  • 【leetcode】383. 赎金信(easy)
  • CTF-记一次PWN练习
  • 《golang设计模式》第一部分·创建型模式-04-工厂方法模式(Factory Method)
  • redis的配置和使用、redis的数据结构以及缓存遇见的常见问题
  • 在Ubuntu系统下修改limits.conf不生效
  • selenium 选项 chrome_options
  • 自然语言处理(Natural Language Processing,NLP)
  • 基于机器学习的库存需求预测 -- 机器学习项目基础篇(12)
  • 【D3S】集成smart-doc并同步配置到Torna
  • 网络安全设备及部署
  • LVS集群
  • Kubernetes(K8s)从入门到精通系列之十二:安装和设置 kubectl
  • 探索 TypeScript 元组的用例
  • Pytorch使用NN神经网络模型实现经典波士顿boston房价预测问题
  • 微服务间消息传递
  • python——案例16:约瑟夫生者死者链队列
  • 【人工智能前沿弄潮】—— 玩转SAM(Segment Anything)
  • 每日一题——合并两个有序的数组
  • MPP架构和Hadoop架构的区别
  • Java02-迭代器,数据结构,List,Set ,Map,Collections工具类