1.查詢全部數據java
SearchRequestBuilder srb = client.prepareSearch("user").setTypes("basic_info"); SearchResponse response = srb.setQuery(QueryBuilders.matchAllQuery()).execute().actionGet(); SearchHits hits =response.getHits(); for(SearchHit hit : hits){ System.out.println(hit.getSourceAsString()); }
執行結果:post
{"name":"張三222","age":20,"address":"山東威海222","email":"zhagnsan_smile@163.com"} {"name":"李四111","age":20,"address":"山東煙臺","email":"zhagnsan_smile@163.com"} {"name":"張三","age":20,"address":"山東威海","email":"zhagnsan_smile@163.com"} {"name":"王五ggg","age":22,"address":"江西南昌","email":"zhagnsan_smile@163.com"} {"name":"張三ggg","age":22,"address":"山東青島","email":"zhagnsan_smile@163.com"} {"name":"張三111","age":20,"address":"山東威海11","email":"zhagnsan_smile@163.com"} {"name":"張三ggg","age":22,"address":"山東青島","email":"zhagnsan_smile@163.com"} {"name":"王五ggg","age":22,"address":"江西南昌","email":"zhagnsan_smile@163.com"}
2.分頁查詢ui
SearchRequestBuilder srb = client.prepareSearch("user").setTypes("basic_info"); SearchResponse response = srb.setQuery(QueryBuilders.matchAllQuery()).setFrom(0).setSize(3).execute().actionGet(); for(SearchHit hit : hits){ System.out.println(hit.getSourceAsString()); }
執行結果:code
{"name":"張三222","age":20,"address":"山東威海222","email":"zhagnsan_smile@163.com"} {"name":"李四111","age":20,"address":"山東煙臺","email":"zhagnsan_smile@163.com"} {"name":"張三","age":20,"address":"山東威海","email":"zhagnsan_smile@163.com"}
3.排序查詢排序
SearchRequestBuilder srb = client.prepareSearch("user").setTypes("basic_info"); SearchResponse response = srb.setQuery(QueryBuilders.matchAllQuery()).addSort("age", SortOrder.ASC).execute().actionGet(); for(SearchHit hit : hits){ System.out.println(hit.getSourceAsString()); }
執行結果:接口
{"name":"張三222","age":20,"address":"山東威海222","email":"zhagnsan_smile@163.com"} {"name":"李四111","age":20,"address":"山東煙臺","email":"zhagnsan_smile@163.com"} {"name":"張三","age":20,"address":"山東威海","email":"zhagnsan_smile@163.com"} {"name":"張三111","age":20,"address":"山東威海11","email":"zhagnsan_smile@163.com"} {"name":"王五ggg","age":22,"address":"江西南昌","email":"zhagnsan_smile@163.com"} {"name":"張三ggg","age":22,"address":"山東青島","email":"zhagnsan_smile@163.com"} {"name":"張三ggg","age":22,"address":"山東青島","email":"zhagnsan_smile@163.com"} {"name":"王五ggg","age":22,"address":"江西南昌","email":"zhagnsan_smile@163.com"}
4.數據列的過濾get
SearchRequestBuilder srb = client.prepareSearch("user").setTypes("basic_info"); SearchResponse response = srb.setQuery(QueryBuilders.matchAllQuery()).addSort("age", SortOrder.ASC).setFetchSource(new String[]{"name","age"},null).execute().actionGet(); for(SearchHit hit : hits){ System.out.println(hit.getSourceAsString()); }
執行結果:it
{"name":"張三222","age":20} {"name":"李四111","age":20} {"name":"張三","age":20} {"name":"張三111","age":20} {"name":"王五ggg","age":22} {"name":"張三ggg","age":22} {"name":"張三ggg","age":22} {"name":"王五ggg","age":22}
5.簡單條件查詢io
SearchRequestBuilder srb = client.prepareSearch("user").setTypes("basic_info"); SearchResponse response = srb.setQuery(QueryBuilders.matchQuery("name","張三")).setFetchSource(new String[]{"name","age"},null).execute().actionGet(); for(SearchHit hit : hits){ System.out.println(hit.getSourceAsString()); }
執行結果:ast
{"name":"張三","age":20} {"name":"張三ggg","age":22} {"name":"張三222","age":20} {"name":"張三ggg","age":22} {"name":"張三111","age":20}
6.查詢結果高亮顯示
HighlightBuilder highlightBuilder = new HighlightBuilder(); highlightBuilder.preTags("<h3><em>"); highlightBuilder.postTags("</em><h3>"); highlightBuilder.field("name"); SearchResponse response = srb.setQuery(QueryBuilders.matchQuery("name","張三")).highlighter(highlightBuilder).addSort("age", SortOrder.ASC).execute().actionGet(); SearchHits hits = response.getHits(); for (SearchHit hit : hits) { System.out.println(hit.getSourceAsString()); System.out.println(hit.getHighlightFields()); }
執行結果:
{"name":"張三222","age":20,"address":"山東威海222","email":"zhagnsan_smile@163.com"} {name=[name], fragments[[<h3><em>張</em><h3><h3><em>三</em><h3>222]]} {"name":"張三","age":20,"address":"山東威海","email":"zhagnsan_smile@163.com"} {name=[name], fragments[[<h3><em>張</em><h3><h3><em>三</em><h3>]]} {"name":"張三111","age":20,"address":"山東威海11","email":"zhagnsan_smile@163.com"} {name=[name], fragments[[<h3><em>張</em><h3><h3><em>三</em><h3>111]]} {"name":"張三ggg","age":22,"address":"山東青島","email":"zhagnsan_smile@163.com"} {name=[name], fragments[[<h3><em>張</em><h3><h3><em>三</em><h3>ggg]]} {"name":"張三ggg","age":22,"address":"山東青島","email":"zhagnsan_smile@163.com"} {name=[name], fragments[[<h3><em>張</em><h3><h3><em>三</em><h3>ggg]]}
7.組合多條件查詢
場景1:must使用
QueryBuilder b1 = QueryBuilders.matchPhraseQuery("name", "張三"); QueryBuilder b2 = QueryBuilders.matchPhraseQuery("address", "山東"); SearchResponse response = srb.setQuery(QueryBuilders.boolQuery().must(b1).must(b2)).execute().actionGet(); SearchHits hits = response.getHits(); for (SearchHit hit : hits) { System.out.println(hit.getSourceAsString()); }
執行結果:
{"name":"張三","age":20,"address":"山東威海","email":"zhagnsan_smile@163.com"} {"name":"張三ggg","age":22,"address":"山東青島","email":"zhagnsan_smile@163.com"} {"name":"張三222","age":20,"address":"山東威海222","email":"zhagnsan_smile@163.com"} {"name":"張三ggg","age":22,"address":"山東青島","email":"zhagnsan_smile@163.com"} {"name":"張三111","age":20,"address":"山東威海11","email":"zhagnsan_smile@163.com"}
場景2: must與must_not組合使用
QueryBuilder b1 = QueryBuilders.matchPhraseQuery("name", "張三"); QueryBuilder b2 = QueryBuilders.matchPhraseQuery("address", "青島"); SearchResponse response = srb.setQuery(QueryBuilders.boolQuery().must(b1).mustNot(b2)).execute().actionGet(); SearchHits hits = response.getHits();
執行結果:
{"name":"張三","age":20,"address":"山東威海","email":"zhagnsan_smile@163.com"} {"name":"張三222","age":20,"address":"山東威海222","email":"zhagnsan_smile@163.com"} {"name":"張三111","age":20,"address":"山東威海11","email":"zhagnsan_smile@163.com"}
場景3: should使用
QueryBuilder b1 = QueryBuilders.matchPhraseQuery("name", "張三"); QueryBuilder b2 = QueryBuilders.matchPhraseQuery("address", "山東"); QueryBuilder b3 = QueryBuilders.rangeQuery("age").gte(20); SearchResponse response = srb.setQuery(QueryBuilders.boolQuery().must(b1).must(b2).should(b3)).addSort("age",SortOrder.DESC).execute().actionGet(); SearchHits hits = response.getHits(); for (SearchHit hit : hits) { System.out.println(hit.getSourceAsString()); }
執行結果:
{"name":"張三ggg","age":22,"address":"山東青島","email":"zhagnsan_smile@163.com"} {"name":"張三ggg","age":22,"address":"山東青島","email":"zhagnsan_smile@163.com"} {"name":"張三222","age":20,"address":"山東威海222","email":"zhagnsan_smile@163.com"} {"name":"張三","age":20,"address":"山東威海","email":"zhagnsan_smile@163.com"} {"name":"張三111","age":20,"address":"山東威海11","email":"zhagnsan_smile@163.com"}
場景4:filter使用
QueryBuilder b1 = QueryBuilders.matchPhraseQuery("name", "張三"); QueryBuilder b2 = QueryBuilders.matchPhraseQuery("address", "山東"); QueryBuilder b3 = QueryBuilders.rangeQuery("age").gt(20); SearchResponse response = srb.setQuery(QueryBuilders.boolQuery().must(b1).must(b2).should(b3).filter(b3)).execute().actionGet(); SearchHits hits = response.getHits(); for (SearchHit hit : hits) { System.out.println(hit.getSourceAsString()); }
執行結果:
{"name":"張三ggg","age":22,"address":"山東青島","email":"zhagnsan_smile@163.com"} {"name":"張三ggg","age":22,"address":"山東青島","email":"zhagnsan_smile@163.com"}