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对应一条记录)最大数量。

Elasticsearch——QueryBuilder简单查询的更多相关文章

  1. elasticsearch kibana简单查询

    kibana CRUD 操作页面 一.简单的CRUD操作 1.添加 PUT /index/type/id {  "json数据" } 2.查询 GET /index/type/id ...

  2. elasticsearch简单查询

    elasticsearch简单查询示例: { "from": "0", //分页,从第一页开始 "size": "10" ...

  3. java使用elasticsearch进行模糊查询-已在项目中实际应用

    java使用elasticsearch进行模糊查询 使用环境上篇文章本人已书写过,需要maven坐标,ES连接工具类的请看上一篇文章,以下是内容是笔者在真实项目中运用总结而产生,并写的是主要方法和思路 ...

  4. 04-springboot整合elasticsearch初识-简单增删改查及复杂排序,分页,聚合操作

        前面大概了解了一下elasticsearch的数据存储和数据的查询.现在学习一下,es的复杂操作.     官网相关文档地址:https://www.elastic.co/guide/en/e ...

  5. elasticsearch GIS空间查询问题解决

    在GIS行业的应用越来越广泛,GIS最常用根据区域进行空间数据查询     我定义了两个方法,一起来看一下: /** * geodistance filter * 一个过滤器来过滤基于一个特定的距离从 ...

  6. Elasticsearch文档查询

    简单数据集 到目前为止,已经了解了基本知识,现在我们尝试用更逼真的数据集,这儿已经准备好了一份虚构的JSON,关于客户银行账户信息的.每个文档的结构如下: { , , "firstname& ...

  7. java操作elasticsearch实现前缀查询、wildcard、fuzzy模糊查询、ids查询

    1.前缀查询(prefix) //prefix前缀查询 @Test public void test15() throws UnknownHostException { //1.指定es集群 clus ...

  8. java操作elasticsearch实现条件查询(match、multiMatch、term、terms、reange)

    1.条件match query查询 //条件查询match query @Test public void test10() throws UnknownHostException { //1.指定e ...

  9. Elasticsearch 常用基本查询

    安装启动很简单,参考官网步骤:https://www.elastic.co/downloads/elasticsearch 为了介绍Elasticsearch中的不同查询类型,我们将对带有下列字段的文 ...

随机推荐

  1. 第二次c++作业(觉得渐渐入门系列)

    其实说实话,我还是不敢很确定地说面向对象和面向过程这两种语言,我确实能分得开,但是我觉得倒是比以前好很多了.//(大概是谈了对象,知道了什么是面向对象编程) 1.从个人角度来说, a:面向过程就是-- ...

  2. PAT 1085 PAT单位排行 (Microsoft_zzt)

    https://pintia.cn/problem-sets/994805260223102976/problems/994805260353126400 每次 PAT 考试结束后,考试中心都会发布一 ...

  3. laya3d 文件格式

    先认识下laya3d的一些文件 导出文件说明:               ls        ---    场景文件: Json文件,包含场景中所有节点的数据信息,包含光照贴图信息          ...

  4. Bare metal APIs with ASP.NET Core MVC(转)

    ASP.NET Core MVC now provides a true "one asp.net" framework that can be used for building ...

  5. jquery 添加与删除的规律 当要添加时候要定位到自己的父元素 当要删除时候 通过事件函数传入的this找到自己的父元素进行删除

    jquery 添加与删除的规律 当要添加时候要定位到自己的父元素  当要删除时候 通过事件函数传入的this找到自己的父元素进行删除

  6. bzoj5127[Lydsy12月赛]数据校验

    多少年不写题解了 题目描述: 著名出题人小 Q 出了一道题,这个题给定一个正整数序列 a1, a2, ..., an,并保证输入数据中,对于 a 的任意一个非空连续子区间 [l, r],该区间内出现过 ...

  7. General Sultan UVA - 11604(建图暴力)

    给出n个字符串,询问是否存在一个字符串(可以是给出的几个中的 也可以是组合成的),使得用字符串(随便你用多少个)来拼凑这个串,能够至少有两种拼法 解析: 把每一个字符串的每一个位置的字符看作结点,进行 ...

  8. 不使用java内置函数,将String字符串转换为int类型

    package com.test; public class AtoiTest { public static void main(String[] args) throws Exception { ...

  9. 【NOIP2017】列队(Splay)

    [NOIP2017]列队(Splay) 题面 洛谷 题解 其实好简单啊... 对于每一行维护一棵\(Splay\) 对于最后一列维护一棵\(Splay\) \(Splay\)上一个节点表示一段区间 每 ...

  10. linux内核分析第3章&第18章读书笔记

    linux内核分析第3章&第18章读书笔记 第三章 进程管理 进程:处于执行期的程序(目标码存放在某种存储介质上) 包含资源:可执行程序代码,打开的文件,挂起的信号,内核内部数据,处理器状态, ...