开发者学堂课程【ElasticSearch 入门精讲:matchAllQuery】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/631/detail/10006
matchAllQuery
内容介绍:
一、描述
二、演示
一、描述
SearchResponsesearchResponse= client.prepareSearch(“blog2”)
.setTypes(“article”).setQuery(QueryBuilders.matchAllQuery())
.get();
SearchHits hits = searchResponse.getHits(); //获取命中次数,查询结果有多少对象
SearchResponsesearchResponse= client.prepareSearch(“blog2”).set
Types(“article”)
.setQuery(QueryBuilders.matchAllQuery())
.addSort(“id”, SortOrder.DESC).get();
SearchHits hits = searchResponse.getHits(); //获取命中次数,查询结果有多少对象
二、演示
在 TestES.java 中输入:
/**
*matchAllQuery 演示
*
*需求:
查询索引库之 bigdata 下的 type 之 product 下所有的记录信息,且根据 ID 进行降序排列
*/
@Test
public void testMatchAllQuery(){
//查询
SearchResponse response = client.prepareSearch(INDEX)
.setTypes(TYPE)
.setQuery(QueryBuilders.matchAllQuery())
.addSort(field: “name”, SortOrder.DESC)
.get();
//显示检索到的信息
SearchHits hits = response.getHits();
for(SearchHit hit:hits) {
System.out.println(hit.getSourceAsString());
}
}
运行结果显示报错
addSort 可能是因为全局排序时,name 不是一个整型,是一个字符串不好比较,只能是 int 型才能比较,所以出现问题。
这时我们可以换一种方式,比如查账户,先来查 bank,bank 里的 account,account 里的 balance,根据 balance 里的降序来查
修改代码:SearchResponse response = client.prepareSearch(...indices: “bank”)
.setTypes(“account”)
addSort(field: “balance”, SortOrder.DESC)
结果如图,查询成功
所以最终修改描述为
/**
*matchAllQuery 演示
*
*需求:查询索引库之 bank 下的 type 之 account 下所有的记录(第一页)信息,且根据 balance 进行降序排列
*/