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"}