Elasticsearch——QueryBuilder简单查询
elastics
earch中存储的全部文档

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简单查询的更多相关文章
- elasticsearch kibana简单查询
kibana CRUD 操作页面 一.简单的CRUD操作 1.添加 PUT /index/type/id { "json数据" } 2.查询 GET /index/type/id ...
- elasticsearch简单查询
elasticsearch简单查询示例: { "from": "0", //分页,从第一页开始 "size": "10" ...
- java使用elasticsearch进行模糊查询-已在项目中实际应用
java使用elasticsearch进行模糊查询 使用环境上篇文章本人已书写过,需要maven坐标,ES连接工具类的请看上一篇文章,以下是内容是笔者在真实项目中运用总结而产生,并写的是主要方法和思路 ...
- 04-springboot整合elasticsearch初识-简单增删改查及复杂排序,分页,聚合操作
前面大概了解了一下elasticsearch的数据存储和数据的查询.现在学习一下,es的复杂操作. 官网相关文档地址:https://www.elastic.co/guide/en/e ...
- elasticsearch GIS空间查询问题解决
在GIS行业的应用越来越广泛,GIS最常用根据区域进行空间数据查询 我定义了两个方法,一起来看一下: /** * geodistance filter * 一个过滤器来过滤基于一个特定的距离从 ...
- Elasticsearch文档查询
简单数据集 到目前为止,已经了解了基本知识,现在我们尝试用更逼真的数据集,这儿已经准备好了一份虚构的JSON,关于客户银行账户信息的.每个文档的结构如下: { , , "firstname& ...
- java操作elasticsearch实现前缀查询、wildcard、fuzzy模糊查询、ids查询
1.前缀查询(prefix) //prefix前缀查询 @Test public void test15() throws UnknownHostException { //1.指定es集群 clus ...
- java操作elasticsearch实现条件查询(match、multiMatch、term、terms、reange)
1.条件match query查询 //条件查询match query @Test public void test10() throws UnknownHostException { //1.指定e ...
- Elasticsearch 常用基本查询
安装启动很简单,参考官网步骤:https://www.elastic.co/downloads/elasticsearch 为了介绍Elasticsearch中的不同查询类型,我们将对带有下列字段的文 ...
随机推荐
- StringBuilder、StringBuffer和String三者的联系和区别
String 类 String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间. String a = "a ...
- C++ Primer Plus学习:第一章
C++入门第一章:预备知识 C++简介 C++融合了三种不同的编程方式: C语言代表的过程性语言. C++在C语言基础上添加的类代表的面向对象语言. C++模板支持的泛型编程. C++简史 20世纪7 ...
- [并查集] More is Better
题目描述 Mr Wang wants some boys to help him with a project. Because the project is rather complex, the ...
- IT行业所面临的问题
在阅读了“2015 IT行业大学生就业分析报告”和“2014年十大最热门行业和职业排行榜 IT行业最吃香_联展新闻”两则新闻后,我决定用一篇和老师对话的形式来表达我的感受. dym:人潮汹涌的招聘市场 ...
- 服务器BMC(带外)
服务器除了装linux,windows系统外,相应还有一个可通过网线(服务器默认带外地址--可改)连接具体厂商服务器的BMC(Baseboard Management Controller,基板管理控 ...
- 欧拉函数phic以及超大数的快速幂
题目:求a^b*c%mod; 其中b<=10^100000; 是不是很大..... /*当你要计算 A^B%C的时候 因为此题中的B很大,达到10^100000,所以我们应该联想到降幂公式. 降 ...
- javascript之彻底理解闭包
闭包是函数和声明该函数的词法环境的组合. function init() { var name = "Mozilla"; // name 是一个被 init 创建的局部变量 fun ...
- web端调百度地图页面
在点击进入地图的入口(下面数据是vue渲染的数据) <a class="navigation" v-if="merchant.longitude && ...
- bzoj4754[JSOI2016]独特的树叶
这个题....别人写得怎么都....那么短啊? 我怎么....WA了好几次啊....怎么去loj扒了数据才调出来啊? 这个算法...怎么我还是不知道对不对啊 怎么回事啊怎么回事啊怎么回事啊? 请无视上 ...
- Day21-Cookie
1. Cookie,有时也用其复数形式 Cookies,指某些网站为了辨别用户身份.进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密).例如在某个网站上保存了用户名和密码,3个月内 ...