全匹配查询
RestHighLevelClient esClient=new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost",9200,"http"))
);
SearchRequest request=new SearchRequest();
request.indices("user");
request.source(new SearchSourceBuilder().query(QueryBuilders.matchAllQuery()));
SearchResponse response = esClient.search(request, RequestOptions.DEFAULT);
SearchHits hits = response.getHits();
System.out.println(hits.getTotalHits());
for(SearchHit hit: hits){
System.out.println(hit.getSourceAsString());
}
esClient.close();
结果
7 hits
{"name":"张三","age":18,"sex":"女"}
{"name":"zhangsan","age":20,"sex":"男"}
{"name":"lisi","age":50,"sex":"女"}
{"name":"zhangsan1","age":30,"sex":"男"}
{"name":"lisi1","age":40,"sex":"男"}
{"name":"zhangsan2","age":40,"sex":"女"}
{"name":"lisi2","age":18,"sex":"男"}
条件查询
RestHighLevelClient esClient=new RestHighLevelClient(
RestClient.builder(new HttpHost("47.94.217.248",9200,"http"))
);
SearchRequest request=new SearchRequest();
request.indices("user");
request.source(new SearchSourceBuilder().query(QueryBuilders.termQuery("age",30)));
SearchResponse response = esClient.search(request, RequestOptions.DEFAULT);
SearchHits hits = response.getHits();
System.out.println(hits.getTotalHits());
for(SearchHit hit: hits){
System.out.println(hit.getSourceAsString());
}
esClient.close();
分页查询
RestHighLevelClient esClient=new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost",9200,"http"))
);
SearchRequest request=new SearchRequest();
request.indices("user");
SearchSourceBuilder builder = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
builder.from(0);
builder.size(2);
request.source(builder);
SearchResponse response = esClient.search(request, RequestOptions.DEFAULT);
SearchHits hits = response.getHits();
System.out.println(hits.getTotalHits());
for(SearchHit hit: hits){
System.out.println(hit.getSourceAsString());
}
esClient.close();
结果
7 hits
{"name":"张三","age":18,"sex":"女"}
{"name":"zhangsan","age":20,"sex":"男"}
过滤字段
RestHighLevelClient esClient=new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost",9200,"http"))
);
SearchRequest request=new SearchRequest();
request.indices("user");
SearchSourceBuilder builder = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
String[] exclude={};
String[] include={"name"};
builder.fetchSource(include,exclude);
request.source(builder);
SearchResponse response = esClient.search(request, RequestOptions.DEFAULT);
SearchHits hits = response.getHits();
System.out.println(hits.getTotalHits());
for(SearchHit hit: hits){
System.out.println(hit.getSourceAsString());
}
esClient.close();
结果
7 hits
{"name":"张三"}
{"name":"zhangsan"}
{"name":"lisi"}
{"name":"zhangsan1"}
{"name":"lisi1"}
{"name":"zhangsan2"}
{"name":"lisi2"}
组合查询
RestHighLevelClient esClient=new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost",9200,"http"))
);
SearchRequest request=new SearchRequest();
request.indices("user");
SearchSourceBuilder builder = new SearchSourceBuilder();
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.must(QueryBuilders.matchQuery("sex","男"));
boolQueryBuilder.must(QueryBuilders.matchQuery("age",30));
builder.query(boolQueryBuilder);
request.source(builder);
SearchResponse response = esClient.search(request, RequestOptions.DEFAULT);
SearchHits hits = response.getHits();
System.out.println(hits.getTotalHits());
for(SearchHit hit: hits){
System.out.println(hit.getSourceAsString());
}
esClient.close();
查询结果
1 hits
{"name":"zhangsan1","age":30,"sex":"男"}
范围查询
RestHighLevelClient esClient=new RestHighLevelClient(
RestClient.builder(new HttpHost("47.94.217.248",9200,"http"))
);
SearchRequest request=new SearchRequest();
request.indices("user");
SearchSourceBuilder builder = new SearchSourceBuilder();
RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("age");
rangeQuery.gte(30);
rangeQuery.lte(40);
builder.query(rangeQuery);
request.source(builder);
SearchResponse response = esClient.search(request, RequestOptions.DEFAULT);
SearchHits hits = response.getHits();
System.out.println(hits.getTotalHits());
for(SearchHit hit: hits){
System.out.println(hit.getSourceAsString());
}
esClient.close();
结果
3 hits
{"name":"zhangsan1","age":30,"sex":"男"}
{"name":"lisi1","age":40,"sex":"男"}
{"name":"zhangsan2","age":40,"sex":"女"}
模糊查询
RestHighLevelClient esClient=new RestHighLevelClient(
RestClient.builder(new HttpHost("47.94.217.248",9200,"http"))
);
SearchRequest request=new SearchRequest();
request.indices("user");
SearchSourceBuilder builder = new SearchSourceBuilder();
builder.query(QueryBuilders.fuzzyQuery("name","zhangsan").fuzziness(Fuzziness.ONE));
request.source(builder);
SearchResponse response = esClient.search(request, RequestOptions.DEFAULT);
SearchHits hits = response.getHits();
System.out.println(hits.getTotalHits());
for(SearchHit hit: hits){
System.out.println(hit.getSourceAsString());
}
esClient.close();
结果
3 hits
{"name":"zhangsan","age":20,"sex":"男"}
{"name":"zhangsan1","age":30,"sex":"男"}
{"name":"zhangsan2","age":40,"sex":"女"}
高亮查询
RestHighLevelClient esClient=new RestHighLevelClient(
RestClient.builder(new HttpHost("47.94.217.248",9200,"http"))
);
SearchRequest request=new SearchRequest();
request.indices("user");
SearchSourceBuilder builder = new SearchSourceBuilder();
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name", "zhangsan");
builder.query(termQueryBuilder);
HighlightBuilder highlightBuilder=new HighlightBuilder();
highlightBuilder.preTags("<font color='red'>");
highlightBuilder.postTags("</font>");
highlightBuilder.field("name");
builder.highlighter(highlightBuilder);
request.source(builder);
SearchResponse response = esClient.search(request, RequestOptions.DEFAULT);
SearchHits hits = response.getHits();
System.out.println(hits.getTotalHits());
for(SearchHit hit: hits){
System.out.println(hit.getSourceAsString());
}
esClient.close();
查询结果
{
"took":2,
"timed_out":false,
"_shards":{
"total":1,
"successful":1,
"skipped":0,
"failed":0
},
"hits":{
"total":{
"value":1,
"relation":"eq"
},
"max_score":1.7641908,
"hits":[
{
"_index":"user",
"_type":"_doc",
"_id":"1002",
"_score":1.7641908,
"_source":{
"name":"zhangsan",
"age":20,
"sex":"[0xffffffe7][0xffffff94][0xffffffb7]"
},
"highlight":{
"name":[
"<font color='red'>zhangsan</font>"
]
}
}
]
}
}
聚合查询
最大年龄
RestHighLevelClient esClient=new RestHighLevelClient(
RestClient.builder(new HttpHost("47.94.217.248",9200,"http"))
);
SearchRequest request=new SearchRequest();
request.indices("user");
SearchSourceBuilder builder = new SearchSourceBuilder();
AggregationBuilder aggregationBuilder = AggregationBuilders.max("maxAge").field("age");
builder.aggregation(aggregationBuilder);
request.source(builder);
SearchResponse response = esClient.search(request, RequestOptions.DEFAULT);
SearchHits hits = response.getHits();
System.out.println(hits.getTotalHits());
for(SearchHit hit: hits){
System.out.println(hit.getSourceAsString());
}
esClient.close();
结果
{
"took":2,
"timed_out":false,
"_shards":{
"total":1,
"successful":1,
"skipped":0,
"failed":0
},
"hits":{
"total":{
"value":7,
"relation":"eq"
},
"max_score":1,
"hits":[
{
"_index":"user",
"_type":"_doc",
"_id":"1001",
"_score":1,
"_source":{
"name":"[0xffffffe5][0xffffffbc][0xffffffa0][0xffffffe4][0xffffffb8][0xffffff89]",
"age":18,
"sex":"[0xffffffe5][0xffffffa5][0xffffffb3]"
}
},
{
"_index":"user",
"_type":"_doc",
"_id":"1002",
"_score":1,
"_source":{
"name":"zhangsan",
"age":20,
"sex":"[0xffffffe7][0xffffff94][0xffffffb7]"
}
},
{
"_index":"user",
"_type":"_doc",
"_id":"1003",
"_score":1,
"_source":{
"name":"lisi",
"age":50,
"sex":"[0xffffffe5][0xffffffa5][0xffffffb3]"
}
},
{
"_index":"user",
"_type":"_doc",
"_id":"1004",
"_score":1,
"_source":{
"name":"zhangsan1",
"age":30,
"sex":"[0xffffffe7][0xffffff94][0xffffffb7]"
}
},
{
"_index":"user",
"_type":"_doc",
"_id":"1005",
"_score":1,
"_source":{
"name":"lisi1",
"age":40,
"sex":"[0xffffffe7][0xffffff94][0xffffffb7]"
}
},
{
"_index":"user",
"_type":"_doc",
"_id":"1006",
"_score":1,
"_source":{
"name":"zhangsan2",
"age":40,
"sex":"[0xffffffe5][0xffffffa5][0xffffffb3]"
}
},
{
"_index":"user",
"_type":"_doc",
"_id":"1007",
"_score":1,
"_source":{
"name":"lisi2",
"age":18,
"sex":"[0xffffffe7][0xffffff94][0xffffffb7]"
}
}
]
},
"aggregations":{
"max#maxAge":{
"value":50
}
}
}
分组聚合查询
RestHighLevelClient esClient=new RestHighLevelClient(
RestClient.builder(new HttpHost("47.94.217.248",9200,"http"))
);
SearchRequest request=new SearchRequest();
request.indices("user");
SearchSourceBuilder builder = new SearchSourceBuilder();
AggregationBuilder aggregationBuilder = AggregationBuilders.terms("ageGroups").field("age");
builder.aggregation(aggregationBuilder);
request.source(builder);
SearchResponse response = esClient.search(request, RequestOptions.DEFAULT);
SearchHits hits = response.getHits();
System.out.println(hits.getTotalHits());
for(SearchHit hit: hits){
System.out.println(hit.getSourceAsString());
}
esClient.close();
结果
{
"took":1,
"timed_out":false,
"_shards":{
"total":1,
"successful":1,
"skipped":0,
"failed":0
},
"hits":{
"total":{
"value":7,
"relation":"eq"
},
"max_score":1,
"hits":[
{
"_index":"user",
"_type":"_doc",
"_id":"1001",
"_score":1,
"_source":{
"name":"[0xffffffe5][0xffffffbc][0xffffffa0][0xffffffe4][0xffffffb8][0xffffff89]",
"age":18,
"sex":"[0xffffffe5][0xffffffa5][0xffffffb3]"
}
},
{
"_index":"user",
"_type":"_doc",
"_id":"1002",
"_score":1,
"_source":{
"name":"zhangsan",
"age":20,
"sex":"[0xffffffe7][0xffffff94][0xffffffb7]"
}
},
{
"_index":"user",
"_type":"_doc",
"_id":"1003",
"_score":1,
"_source":{
"name":"lisi",
"age":50,
"sex":"[0xffffffe5][0xffffffa5][0xffffffb3]"
}
},
{
"_index":"user",
"_type":"_doc",
"_id":"1004",
"_score":1,
"_source":{
"name":"zhangsan1",
"age":30,
"sex":"[0xffffffe7][0xffffff94][0xffffffb7]"
}
},
{
"_index":"user",
"_type":"_doc",
"_id":"1005",
"_score":1,
"_source":{
"name":"lisi1",
"age":40,
"sex":"[0xffffffe7][0xffffff94][0xffffffb7]"
}
},
{
"_index":"user",
"_type":"_doc",
"_id":"1006",
"_score":1,
"_source":{
"name":"zhangsan2",
"age":40,
"sex":"[0xffffffe5][0xffffffa5][0xffffffb3]"
}
},
{
"_index":"user",
"_type":"_doc",
"_id":"1007",
"_score":1,
"_source":{
"name":"lisi2",
"age":18,
"sex":"[0xffffffe7][0xffffff94][0xffffffb7]"
}
}
]
},
"aggregations":{
"lterms#ageGroups":{
"doc_count_error_upper_bound":0,
"sum_other_doc_count":0,
"buckets":[
{
"key":18,
"doc_count":2
},
{
"key":40,
"doc_count":2
},
{
"key":20,
"doc_count":1
},
{
"key":30,
"doc_count":1
},
{
"key":50,
"doc_count":1
}
]
}
}
}