【转载】Elasticsearch——QueryBuilder简单查询--模糊搜索

2023-11-06

elasticsearch中存储的全部文档

1.matchAllQuery()

matchAllQuery()方法用来匹配全部文档

public class QueryTest {  
    public static void main(String[] args) {  
        //创建对象,设置集群名称和IP地址  
        ElasticsearchUtils es = new ElasticsearchUtils("im_shan",  
                "localhost");  
        String indexName = "school";//索引名称  
        String typeName = "student";//类型名称  
        //搜索全部文档  
        QueryBuilder queryBuilder = QueryBuilders.matchAllQuery();  
        SearchResponse searchResponse = es.searcher(indexName, typeName,  
            queryBuilder);  
        SearchHits hits = searchResponse.getHits();  
        SearchHit[] searchHits = hits.getHits();  
        int i = 0;  
        for (SearchHit searchHit : searchHits) {  
            String name = (String) searchHit.getSource().get("name");  
            String birth = (String) searchHit.getSource().get("birth");  
            String interest = (String) searchHit.getSource().get("interest");  
            System.out.println("-------------" + (++i) + "------------");  
            System.out.println(name);  
            System.out.println(birth);  
            System.out.println(interest);  
        }  
  
    }  
}  

控制台将输出全部文档

输出:  
-------------1------------  
amy  
1995-11-10  
singing dancing  
-------------2------------  
angle  
1996-05-01  
singing reading  
-------------3------------  
jackson  
1995-08-01  
basketball music reading  
-------------4------------  
jack  
1995-03-21  
football music  
-------------5------------  
tom  
1995-09-11  
reading music  

2.matchQuery(String name,Object  text)

matchQuery("filedname","value")匹配单个字段,匹配字段名为filedname,值为value的文档

java] view plain copy

 
//单个匹配,搜索name为jack的文档  
QueryBuilder queryBuilder = QueryBuilders.matchQuery("name", "jack"); 

此时会输出一条记录,因为只有一个name为jack的文档

-------------1------------  
jack  
1995-03-21  
football music 

 3.multiMatchQuery(Object text, String... fieldNames)

多个字段匹配某一个值

[java] view plain copy

 
QueryBuilder queryBuilder = QueryBuilders.multiMatchQuery("music",  
           "name", "interest");//搜索name中或interest中包含有music的文档(必须与music一致)  

控制台输出如下

-------------1------------  
jack  
1995-03-21  
football music  
-------------2------------  
tom  
1995-09-11  
reading music  
-------------3------------  
jackson  
1995-08-01  
basketball music reading  

4.wildcardQuery()模糊查询

模糊查询,?匹配单个字符,*匹配多个字符

 
WildcardQueryBuilder queryBuilder = QueryBuilders.wildcardQuery("name",  
            "*jack*");//搜索名字中含有jack文档(name中只要包含jack即可)  

控制台输出如下

-------------1------------  
jackson  
1995-08-01  
basketball music reading  
-------------2------------  
jack  
1995-03-21  
football music

 5.使用BoolQueryBuilder进行复合查询

使用must

java] view plain copy

 
//模糊查询  
WildcardQueryBuilder queryBuilder1 = QueryBuilders.wildcardQuery(  
            "name", "*jack*");//搜索名字中含有jack的文档  
WildcardQueryBuilder queryBuilder2 = QueryBuilders.wildcardQuery(  
            "interest", "*read*");//搜索interest中含有read的文档  
  
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();  
//name中必须含有jack,interest中必须含有read,相当于and  
boolQueryBuilder.must(queryBuilder1);  
boolQueryBuilder.must(queryBuilder2);  

控制台输出如下(name中必须含有jack,interest中必须含有read,只有一条文档匹配):

-------------1------------  
jackson  
1995-08-01  
basketball music reading  

使用should

WildcardQueryBuilder queryBuilder1 = QueryBuilders.wildcardQuery(  
            "name", "*jack*");//搜索名字中含有jack的文档  
WildcardQueryBuilder queryBuilder2 = QueryBuilders.wildcardQuery(  
            "interest", "*read*");//搜索interest中含有read的文档  
  
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();  
//name中含有jack或者interest含有read,相当于or  
boolQueryBuilder.should(queryBuilder1);  
boolQueryBuilder.should(queryBuilder2);  

控制台输出(name中含有jack或者interest中含有read的都将被匹配):

------------1------------  
jackson  
1995-08-01  
basketball music reading  
-------------2------------  
angle  
1996-05-01  
singing reading  
-------------3------------  
jack  
1995-03-21  
football music  
-------------4------------  
tom  
1995-09-11  
reading music

6.分页
通过from和size参数进行分页。From定义查询结果开始位置,size定义返回的hits(一条hit对应一条记录)最大数量。

 

 

引用:https://www.cnblogs.com/sbj-dawn/p/8891419.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【转载】Elasticsearch——QueryBuilder简单查询--模糊搜索 的相关文章

  • 机器学习20:基于ResNet50和FaceNet实现人脸识别

    说明 这是优达学城的一个机器学习作业项目 我觉得还比较典型综合了几个常见的深度学习技术 值得分享一下 实现包括 数据增广 迁移学习 网络模型构建 训练 评估方法等 这里只是做了一个迁移学习的实现 重在实践过程 其原理没做分析 缺点 由于训练
  • AI赋能:华院计算智能焦化方案入选2023通用人工智能创新应用案例

    目前 十四五 国家信息化规划 已提出了 构建产业数字化转型发展体系 的重大任务 而企业数智化转型是其中不可缺少的一环 中国信通院高度关注企业数智化转型中遇到的痛点 启动了2023年通用人工智能创新应用案例征集 根据申报项目的产品能力 技术创
  • Cocos2d-X中的节点类CCNode

    有过iOS开发经验的人应该对UIView不陌生 在Cocos2d X中也有属于它的 UIIView CCNode 接下来我们在比较中了解2d X中的CCNode 节点类CCNode是Cocos2d X中的主要类 继承自CCObject UI
  • 阿里云、华为云、百度云等比较

    几个朋友的亲身经历 也期望国内毛蟹厂家可以捉的更加好 阿里云 功能 对LINUX支持很好 有基本的小区防火墙 5个快照管理 有自定义镜像管理 价格 最低700 配置 1U 512 可以退款吗 可以 使用情况 非常好 还有短信报警 很稳定 公
  • html实现旅游网站代码_HTML+CSS实现头部head和导航的制作--源代码

  • 单机诛仙3服务器正在维护,【运营版】诛仙3单机版天界一键MSSQL端修复大量BUG+视频教程+GM工具...

    游戏版本 诛仙3单机天界一键MSSQL端 经安全测试 以下修改均可用 1 增加物品销售NPC 周一仙 小环 河阳飞天 月老 轩辕祖师 清风 明月 交造化 元神任务 黑市商人 礼品兑换使者 河阳炼器师 有大量物品销售 2 修改SecureCR
  • yarn遇到的问题啦,This may cause things to work incorrectly. Make sure to use the same version for both

    yarn的时候出错 This may cause things to work incorrectly If you are using vue loader lt 10 0 or vueify re installing vue load
  • django下载csv文件笔记

    下载小的csv文件 这里将用一个生成小的CSV文件为例 来把生成CSV文件的技术要点讲到位 我们用Python内置的csv模块来处理csv文件 并且使用HttpResponse来将csv文件返回回去 示例代码如下 1 在templates目
  • LeetCode:189. 轮转数组(Java)

    方法1 跳序 轮转法 带标记 时间复杂度和空间复杂度均为O n 因为有些特殊情况 会陷入循环 比如这个例子 我不知道怎么处理这种情况 所以直接搞个标记数组falgs 来看看这个位置的数字是否被处理过 方法二来改进这个陷入循环的问题 clas
  • Redis使用hmset利用相同key存数据时不完全覆盖问题

    首先说一下这篇博文得目的 昨天在使用redis时用到了hmset hmset简单说下是reids同时将多个键值对设置到哈希表中 按照key唯一得规则 相同key值进行赋值时肯定会对value值进行覆盖 但hmset却有些不同之处 接下来我做
  • TS复习-------TS中的泛型

    目录 概念 初识泛型 泛型类型 泛型类 泛型约束 泛型工具类型 Partial Record ReturnType Pick Exclude 概念 泛型 Generics 是指在定义函数 接口或类的时候 不预先指定具体的类型 而在使用的时候
  • 电商平台商品爬虫+django可视化分析

    1 简介 今天向大家介绍一个帮助往届学生完成的毕业设计项目 电商平台商品爬虫 django可视化分析 计算机毕业生设计 课程设计需要帮助的可以找我 2 设计概要 21世纪是信息化时代 随着信息技术和网络技术的发展 信息化已经渗透到人们日常生
  • GinCMS 使用golang Gin框架xorm开发的小型内容管理系统

    系统介绍 服务器端 使用GoLang 基于Gin框架 MySQL数据库 用到的组件xorm 前端展示 使用基于LayUI的layuicms 用到的第三方组件authtree treeTable GinCMS是我学习golang 使用Gin开
  • hdu 1210 Eddy's 洗牌问题

    题目连接 http acm hdu edu cn showproblem php pid 1210 题目思路很简单 只要保证1在第一个位置的时候就说明牌的顺序达到要求 输出M就可以了 代码 include
  • Unity3d——UI(血条制作)

    血条 Health Bar 制作 具体要求如下 分别使用 IMGUI 和 UGUI 实现 使用 UGUI 血条是游戏对象的一个子元素 任何时候需要面对主摄像机 分析两种实现的优缺点 IMGUI 效果图 血条红色不是很明显 为了显示IMGUI
  • python包安装相关-conda,pip-虚拟环境

    运行python的时候一定要注意当前运行所在环境位置 环境位置不同 包含的依赖包是不同的 然后不注意的话就是出很多莫名其妙的问题 比如一个pycharm里面不能运行的东西 命令行又能运行啥的 PIP使用的一些点 pip安装包的时候加上后缀
  • 7.4.3-elasticsearch索引字段类型参数

    fielddata 大多数字段默认情况下都会建立索引方便查询 但是针对排序 聚合以及脚本访问字段值则需要另外的访问方式 查询操作需要回答 哪些doc包含查询的词 而排序和聚合则需要回答 doc中该字段的值是多少 大多数字段可以通过文档索引在
  • linux grep命令

    1 作用 Linux系统中grep命令是一种强大的文本搜索工具 它能使用正则表达式搜索文本 并把匹 配的行打印出来 grep全称是Global Regular Expression Print 表示全局正则表达式版本 它的使用权限是所有用户
  • maven中mirror镜像和repository仓库配置

    maven仓库和镜像配置 1 名词解释 2 reportsitory仓库配置 3 mirror镜像配置 4 mirror与reporsitory 4 1 mirror与reporsitory的关系 4 2 mirrorOf的作用 1 名词解

随机推荐

  • Deveco studio 鸿蒙app访问网络详细过程(js)

    目录 效果图 安装IDE工具Deveco studio 创建项目 项目配置 编辑 功能开发 效果图 话不多说 上效果 安装IDE工具Deveco studio 下载地址 HUAWEI DevEco Studio和SDK下载和升级 Harmo
  • vue2如何使用element ui快速搭建自己的前端页面

    文章目录 前言 一 element ui是什么 二 使用步骤 1 在项目中引入 element ui 2 全局引入 element ui 组件 3 局部引入 element ui 组件 4 使用组件 前言 element ui 是一款非常好
  • 使用pyecharts绘制系统依赖关系图

    使用pyecharts绘制系统依赖关系图 背景介绍 近期梳理了公司内部系统之间的数据关系 得到了多个excel格式的统计文件 每个文件包含了该系统自身数据清单 依赖的其他系统的数据清单 对其他系统供应的数据清单 各系统之间依赖关系复杂 所以
  • 【Tomcat】Tomcat配置ssl证书

    记一次因各种需求在Linux中配置tomcat的https自签发证书过程 SSL证书简介 1 公开可信认证机构 例如CA 但是申请一般是收费的 一般几百到几千一年 在这里可以给你们介绍一下腾讯云截止到目前还有免费一年的CA证书服务 可以用一
  • 第三方服务器不在响应,服务器是怎样响应请求的?

    小弟最近在改后端项目 但出了个 bug 又解决不了 我觉得是我的后端知识太欠缺了 特来这里请教 流程是这样的 前端有上送信息 接口收到信息后 用收到的部分信息再去第三方接口请求信息 把两部分合起来存储 收到的信息中有一部分是用户ID 绝不重
  • Java: StringBuffer类的运用

    字符串的学习不比其他数据类型的学习 不管是对对象 对象的实体 属性等 的打印 还是在平常所有可以展示出来供我们进行参考的数据内容 共同点就是它们都是 string 字符串 都是一种字符串文本 而且在对一些我们所想表达的数据的提交和获取时 都
  • DBA的一些职责

    1 DBA的一些职责 安装和升级数据库服务器 如Oracle Microsoft SQL server 以及应用程序工具 数据库设计系统存储方案 并制定未来的存储需求计划 一旦开发人员设计了一个应用 就需要DBA来创建数据库存储结构 tab
  • DNN结构:CNN、LSTM/RNN中的Attention结构

    前言 attention作为一种机制 有其认知神经或者生物学原理 注意力的认知神经机制是什么 如何从生物学的角度来定义注意力 大多数attention gating 技巧都可以直接加入现有的网络架构 通过合理设计初始化和训练步骤也可以利用现
  • Linux--写时拷贝、内存管理

    目录 1 内存管理 2 写时拷贝技术 1 内存管理 简单分页 逻辑页 物理页 页表 将虚拟内存空间和物理内存空间划分为大小相同的页面 4k 8k 16k等 虚拟内存 在磁盘上划分一块空间 为什么要有逻辑页面和物理页面 物理页面很长 不能确定
  • ubuntu 设置网络代理

    Ubuntu下通过终端设置网络代理 以便apt get等命令可以正常使用 只需在终端里设置http proxy系统变量即可 plain export http proxy http usr name usr password ipaddre
  • 华为云交付项目服务器配置表,云服务器设备配置列表

    云服务器设备配置列表 内容精选 换一换 当您在华为云上部署了弹性云服务器以及其他云服务 想在关联VPC内通过内网域名实现互访 可以为弹性云服务器配置内网域名解析 内网域名可以随意创建 无需注册 只需要保证VPC内唯一 本操作以为弹性云服务器
  • JavaScript设计模式——工厂模式

    在介绍工厂模式之前 首先我们要理解一下什么是设计模式 什么是设计原则 设计模式 通常在我们解决问题的时候 很多时候不是只有一种方式 我们通常有多种方式来解决 但是肯定会有一种通用且高效的解决方案 这种解决方案在软件开发中我们称它为设计模式
  • 字符串的截取

    第二个 开始截取 String orderArr1 order substring order indexOf order indexOf 1 最后一个 开始截取 String orderArr1 order substring order
  • iOS如何提高tableView的性能

    a 重用cell 我们都知道申请内存是需要时间 特别是在一段时间内频繁的申请内存将会造成很大的开销 而且上tebleView中cell大部分情况下布局都是一样的 这个时候我们可以通过回收重用机制来提高性能 b 避免content的重新布局
  • webservice 安全认证请求头信息

    java import java io IOException import java util Enumeration import javax servlet Filter import javax servlet FilterChai
  • 【深度学习

    文章目录 一 前言 二 Computer vision 2 1 Image classification 2 2 Object detection 2 3 Image segmentation 2 4 Depth estimation 三
  • JAVA使用EasyExcel 进行文件的下载

    Spring Boot中使用EasyExcel 进行文件的下载 1 引入依赖
  • Qt中文乱码解决方法

    Qt中文乱码解决方法 一步到位 一 中文乱码解决方法一 1 QString str QStringLiteral 1你好世界 abc 推荐 2 QString str QObject tr 2你好世界 abc 推荐国际化软件使用 其余不推荐
  • Vue3无法用watch监听到通过ref定义的div内容的改变

    源码如下 div设置了contenteditable属性 但是其中的通过ref绑定的数据监听不到变化
  • 【转载】Elasticsearch——QueryBuilder简单查询--模糊搜索

    elasticsearch中存储的全部文档 1 matchAllQuery matchAllQuery 方法用来匹配全部文档 public class QueryTest public static void main String arg