Elasticsearch模糊查询、多字段in查询、时间范围查询,DSL和java API两种方式
2024-08-30 11:11:01
Elasticsearch模糊查询、多字段in查询、时间范围查询,DSL和java API两种方式
项目场景:
Elasticsearch模糊查询某字段、多字段in查询、时间范围查询,通过DSL和java API两种方式
解决方案:
一、模糊查询
wildcard 通配符检索
使用wildcard相当于SQL的like,前后都可拼接*,匹配0到多个任意字符
- {
- "query": {
- "wildcard": {
- "name.keyword": "*文件*"
- }
- }
- }
- BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
- queryBuilder.must(QueryBuilders.wildcardQuery("name.keyword", "*文件*"));
fuzzy 模糊/纠错检索
使用fuzzy类似百度搜索,你输入“周杰伦”,也能查出来“周杰轮”,有纠错能力
- {
- "query": {
- "fuzzy": {
- "name.keyword": "*周杰伦*"
- }
- }
- }
- BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
- queryBuilder.must(QueryBuilders.fuzzyQuery("name.keyword", "周杰伦"));
二、多字段in查询
通过terms实现,类似SQL的in查询,多字段用集合表示
- {
- "query": {
- "bool": {
- "must": {
- "terms": {
- "name":[
- "张三",
- "李四"
- ]
- }
- }
- }
- }
- }
- BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
- queryBuilder.must(QueryBuilders.termsQuery("name.keyword", new ArrayList<>()));
三、时间范围查询
from、to为时间范围,include_lower、include_upper为是否包含左右边界
- {
- "query": {
- "bool": {
- "must": {
- "range": {
- "createTime": {
- "from": "2022-01-01",
- "to": "2022-03-01",
- "include_lower": true,
- "include_upper": true,
- "boost": 1
- }
- }
- }
- }
- }
- }
- BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
- queryBuilder.must(QueryBuilders.rangeQuery("createTime").gte("2022-01-01").lte("2022-03-01"));
最新文章
- for xml path 将单表中一个字段用逗号分隔
- ASIHttpRequest 使用理解
- systemd在各个linux发行版的普及
- 【转载】Oracle实例和Oracle数据库(Oracle体系结构)
- OpenJudge 2787 算24
- 获取当前页面的url
- 使用JavaScript进行数组去重——一种高效的算法
- 第二次冲刺spring会议(第二次会议)
- JavaSE教程-03深入探究原码,反码,补码-扩展
- Java-IO之对象输入流输出流(ObjectInputStream和ObjectOutputStream)
- SQLServer中PRECISION和LENGTH,还有SCALE的区别
- Linux scp 命令卡住的原因
- Linux unalias命令 取消别名
- [android] 插入一条记录到系统短信应用里
- angular 获取ng-repeat完成状态 $last
- 班级作业:Java Web环境的搭建
- CentOS(6.8)7 安装 Mysql 5.7
- 在使用SQLServer时忘记sa账号密码解决办法
- centos7 安装jenkenis
- [svc]salt基本原理
热门文章
- MySQL 中 datetime 和 timestamp 的区别与选择
- 基于CentOS 8服务器来搭建FastDFS高可用集群环境
- nsis制作新版迅雷安装界面
- Goland Socket 服务
- 谣言检测(DUCK)《DUCK: Rumour Detection on Social Media by Modelling User and Comment Propagation Networks》
- Dest0g3迎新赛misc部分解析
- 基于vite3+tauri模拟QQ登录切换窗体|Tauri自定义拖拽|最小/大/关闭
- Sentinel 介绍与下载使用
- 九、docker swarm主机编排
- 以开发之名 | bilibili会员购让IP在眼前动起来