match_all
@Test
void testMatchAll() throws IOException {
SearchRequest request = new SearchRequest("hotel");
request.source().query(QueryBuilders.matchAllQuery()).size(10);
SearchResponse response = client.search(request,RequestOptions.DEFAULT);
SearchHits hits = response.getHits();
long value = hits.getTotalHits().value;
System.out.println("the sum is "+value);
SearchHit[] searchHits = hits.getHits();
for (SearchHit searchHit:searchHits){
String json = searchHit.getSourceAsString();
HotelDoc hotelDoc = JSON.parseObject(json,HotelDoc.class);
System.out.println("the value is"+hotelDoc);
}
}
match
@Test
void testMatch() throws IOException {
SearchRequest request = new SearchRequest("hotel");
request.source().query(QueryBuilders.matchQuery("brand","如家"));
SearchResponse response = client.search(request,RequestOptions.DEFAULT);
extracted(response);
}
term/range
request.source().query(QueryBuilders.termQuery("brand","如家"));
request.source().query(QueryBuilders.rangeQuery("price").gte(100).lte(200));
排序和分页
GET /hotel/_search
{
"query": {
"match_all": {}
},
"from": 0,
"size": 10,
"sort": [
{
"price": "asc"
}
]
}
以这段dsl查询为例:
@Test
void testPageAndSort() throws IOException {
int page = 1, size =5;
SearchRequest request = new SearchRequest("hotel");
request.source().query(QueryBuilders.matchAllQuery());
request.source().sort("price", SortOrder.ASC);
request.source().from((page-1)*size).size(10);
SearchResponse response = client.search(request,RequestOptions.DEFAULT);
extracted(response);
}
注意sort 和分页 与 query是平级的。