boolQuery | 学习笔记

简介: 快速学习 boolQuery

开发者学堂课程【ElasticSearch 入门精讲boolQuery学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/631/detail/10004


boolQery


内容介绍:

一、讲义

二、演示


一、讲义

组合查询(复杂查询

must(QueryBuilders): AND

mustNot(QueryBuilders): NOT

should(QueryBuilders):OR

在定义 json:放置到 Elasticsearch的插件中

{

"query":{

"bool":{

"must":{

"term":{

"title":"elasticsearch"

}

},

"should":{

"range":{

"id":{  

"from":1,

"to":2

        }

}SearchResponse searchResponse = client.prepareSearch("blog2").setTypes("article") .setQuery(QueryBuilders.boolQuery().must(QueryBuilderstermQuery("title","搜索").must(QueryBuilders.wildcardQuery("content","elagic*ch")).get();

SearchHits hits = searchResponse.getHits();//获取命中次数,查询结果有多少对象

二、演示

/**

* boolQuery 演示

*需求:查询索引库 bigdata 中的 type 之 product 中,name 为 hadoop,且 author 中包含了辛格的索引信息。

*/

@Test

public void testBoolQuery(){

 //检索

SearchResponse response = client.preparesearch(INDEX)

.setTypes (TYPE)

.setQuery(QueryBuilders.boolQuery()

.must(QueryBuilders.matchPhraseQuery(name: "name",value: "hadoop"))

.should(QueryBuilders.wildcardQuery(name: "author",query:"Sp*")))

.get();

//显示检索到的信息

SearchHits hits = response.getHits();

for (SearchHit hit : hits){

System.out.println(hit.getSourceAsString());

}

}

运行结果如图

image.png

要显示检索信息为施瓦辛格,修改代码

.should(QueryBuilders.wildcardQuery(name: "author",query:"Sp*")))

.should(QueryBuilders.matchPhraseQuery(name: "author",query:"Spark")))

运行结果如图

image.png

如要显示两条记录,则应该将 must 都换为 should,为或的关系,

.should(QueryBuilders.matchPhraseQuery(name: "name",value: "hadoop"))

如图

image.png

目录
打赏
0
0
0
0
214
分享
相关文章
雨痕大神的《学习笔记系列》
雨痕大神的《学习笔记》可以在他的GitHub(https://github.com/qyuhen/book)下载,7000+的Star,足以证明认可度。 笔记系列陆陆续续在出版,已出版的有: 《Python 3学习笔记(上卷)》https://www.
3755 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等