目录
一、创建表结构:
二、ES的各种查询
2.1term&terms查询
2.1.1term查询(我试了下province没有办法查询,需到后面加个.keyword)
2.1.2terms查询
2.2match_all&match查询
2.2.1match_all
2.2.2match查询
2.2.3布尔match查询
2.2.4mulitMatch查询
2.3id&ids查询
2.3.1id查询
2.3.2ids查询
2.4prefix查询
2.5fuzzy查询
2.6wildcard查询
2.7range查询
2.7regexp查询
2.8深分页Scroll
2.9delete-by-query
3.0复合查询
3.0.1bool查询
3.0.2boosting查询
3.1filter查询
3.2高亮查询
3.3聚合查询
3.3.1去重计数查询(cardinality)
3.3.2范围统计
3.3.3统计聚合查询
3.4地图经纬度查询
3.4.1地图检索方式
3.4.2基于RESTFUL实现地图检索
3.4.3java实现geo_polygon检索
=
一、创建表结构:
![](https://img-blog.csdnimg.cn/img_convert/91b7990ab7ca49a1db8d9dc0d8a9ac61.png)
二、ES的各种查询
2.1term&terms查询
2.1.1term查询(我试了下province没有办法查询,需到后面加个.keyword)
![](https://img-blog.csdnimg.cn/img_convert/ea8381badc39708a17ab28649b310734.png)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | package com.qf.test; import com.fasterxml.jackson.databind.ObjectMapper; import com.qf.utils.ESClient; import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchRequestBuilder; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.builder.SearchSourceBuilder; import org.junit.Test; import java.io.IOException; import java.util.Map; public class Demo4 { ObjectMapper mapper= new ObjectMapper(); RestHighLevelClient client = ESClient.getClient(); String index= "sms-logs-index" ; String type= "sms-logs-type" ; @Test public void termQuery() throws IOException { //1.创建request对象 SearchRequest searchRequest= new SearchRequest(index); searchRequest.types(type); //2.指定查询条件 SearchSourceBuilder builder= new SearchSourceBuilder(); builder.from( 0 ); builder.size( 5 ); builder.query(QueryBuilders.termQuery( "province.keyword" , "北京" )); searchRequest.source(builder); //执行查询 SearchResponse rsp=client.search(searchRequest, RequestOptions.DEFAULT); //输出结果 for (SearchHit hit:rsp.getHits().getHits()) { Map<String,Object> result=hit.getSourceAsMap(); System.out.println(result); } } } |
2.1.2terms查询
![](https://img-blog.csdnimg.cn/img_convert/9e62be8ff1365a2cf60e3a4ebe2ec317.png)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | POST /sms-logs-index/sms-logs-type/_search { "from" : 0, "size" : 5, "query" :{ "terms" :{ "province.keyword" :[ "江苏" , "北京" , "南通" ] } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | @Test public void termsQuerry() throws IOException { SearchRequest request= new SearchRequest(index); request.types(type); SearchSourceBuilder builder= new SearchSourceBuilder(); builder.query(QueryBuilders.termsQuery( "province.keyword" , "南通" , "江苏" )); request.source(builder);; SearchResponse rsp=client.search(request, RequestOptions.DEFAULT); //输出结果 for (SearchHit hit:rsp.getHits().getHits()) { Map<String,Object> result=hit.getSourceAsMap(); System.out.println(result); } }} |
2.2match_all&match查询
2.2.1match_all
![](https://img-blog.csdnimg.cn/img_convert/81a40c7d2e21afb6b7dfd35b1a61b008.png)
1 2 3 4 5 6 | POST /sms-logs-index/sms-logs-type/_search { "query" : { "match_all" : {} } } |
注:ES默认查询10条数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | @Test public void matchAllQuery() throws IOException { SearchRequest request= new SearchRequest(index); request.types(type); SearchSourceBuilder builder= new SearchSourceBuilder(); builder.query(QueryBuilders.matchAllQuery()); builder.size( 20 ); //ES默认查询10条数据 request.source(builder); SearchResponse rsp=client.search(request, RequestOptions.DEFAULT); for (SearchHit hit: rsp.getHits().getHits()) { System.out.println(hit.getSourceAsMap()); } } |
2.2.2match查询
![](https://img-blog.csdnimg.cn/img_convert/41fc67ed3c01e7623bb657bd5e3099f1.png)
POST /sms-logs-index/sms-logs-type/_search
{
"query": {
"match": {
"smsContent": "恭喜"
}
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | @Test public void matchQuery() throws IOException { SearchRequest request= new SearchRequest(index); request.types(type); SearchSourceBuilder builder= new SearchSourceBuilder(); builder.query(QueryBuilders.matchQuery( "smsContent" , "恭喜" )); builder.size( 20 ); //ES默认查询10条数据 request.source(builder); SearchResponse rsp=client.search(request, RequestOptions.DEFAULT); for (SearchHit hit: rsp.getHits().getHits()) { System.out.println(hit.getSourceAsMap()); } } |
2.2.3布尔match查询
![](https://img-blog.csdnimg.cn/img_convert/54c9ecc0efbc75057f539084272592e9.png)
![](https://img-blog.csdnimg.cn/img_convert/ba37053aafd9ca205da85568b0e4fc5e.png)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public void booleanMatchQuery() throws IOException { SearchRequest request= new SearchRequest(index); request.types(type); SearchSourceBuilder builder= new SearchSourceBuilder(); builder.query(QueryBuilders.matchQuery( "smsContent" , "恭喜 高级" ).operator(Operator.AND)); builder.size( 20 ); //ES默认查询10条数据 request.source(builder); SearchResponse rsp=client.search(request, RequestOptions.DEFAULT); for (SearchHit hit: rsp.getHits().getHits()) { System.out.println(hit.getSourceAsMap()); } } |
2.2.4mulitMatch查询
![](https://img-blog.csdnimg.cn/img_convert/be5ce071ed097c573b09c7a05ac7871f.png)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | @Test public void mulitMatchQuery() throws IOException { SearchRequest request= new SearchRequest(index); request.types(type); SearchSourceBuilder builder= new SearchSourceBuilder(); builder.query(QueryBuilders.multiMatchQuery( "北京" , "province" , "smsContent" )); builder.size( 20 ); //ES默认查询10条数据 request.source(builder); SearchResponse rsp=client.search(request, RequestOptions.DEFAULT); for (SearchHit hit: rsp.getHits().getHits()) { System.out.println(hit.getSourceAsMap()); } } |
2.3id&ids查询
2.3.1id查询
![](https://img-blog.csdnimg.cn/img_convert/78982e480ed8796d7dbd26cefe101fd5.png)
![](https://img-blog.csdnimg.cn/img_convert/cd949ea018e2debe0d32c962580c3b4b.png)
@Test
public void findByid() throws IOException {
GetRequest request=new GetRequest(index,type,"1");
GetResponse rsp=client.get(request, RequestOptions.DEFAULT);
System.out.println(rsp.getSourceAsMap());
}
2.3.2ids查询
![](https://img-blog.csdnimg.cn/img_convert/d186a384f485d4b608b827b491161590.png)
@Test
public void findByids() throws IOException {
SearchRequest request=new SearchRequest(index);
request.types(type);
SearchSourceBuilder builder=new SearchSourceBuilder();
builder.query(QueryBuilders.idsQuery().addIds("1","2","3"));
request.source(builder);
SearchResponse rsp=client.search(request, RequestOptions.DEFAULT);
for (SearchHit hit: rsp.getHits().getHits()) {
System.out.println(hit.getSourceAsMap());
}
}
2.4prefix查询
![](https://img-blog.csdnimg.cn/img_convert/396b13d6516a6fc792ed6d4b922e8018.png)
@Test
public void findByPrefix() throws IOException {
SearchRequest request=new SearchRequest(index);
request.types(type);
SearchSourceBuilder builder=new SearchSourceBuilder();
builder.query(QueryBuilders.prefixQuery("corpName","恭喜"));
request.source(builder);
SearchResponse rsp=client.search(request, RequestOptions.DEFAULT);
for (SearchHit hit: rsp.getHits().getHits()) {
System.out.println(hit.getSourceAsMap());
}
}
2.5fuzzy查询
![](https://img-blog.csdnimg.cn/img_convert/c222730a4184a8de3307c83b1eebce42.png)
@Test
public void findByfuzzy() throws IOException {
SearchRequest request=new SearchRequest(index);
request.types(type);
SearchSourceBuilder builder=new SearchSourceBuilder();
builder.query(QueryBuilders.fuzzyQuery("corpName","恭喜您").prefixLength(2));
request.source(builder);
SearchResponse rsp=client.search(request, RequestOptions.DEFAULT);
for (SearchHit hit: rsp.getHits().getHits()) {
System.out.println(hit.getSourceAsMap());
}
}
2.6wildcard查询
![](https://img-blog.csdnimg.cn/img_convert/eedd56b8ab6736acfc783c22d2a16102.png)
2.7range查询
![](https://img-blog.csdnimg.cn/img_convert/73d3585f65028580f9c8620fc61a98f8.png)
2.7regexp查询
![](https://img-blog.csdnimg.cn/img_convert/2a9877e462415372e57b265c91c0138b.png)
![](https://img-blog.csdnimg.cn/img_convert/4bc8378da62c075a652a85a5029a8301.png)
![](https://img-blog.csdnimg.cn/img_convert/9382bd3bb66e8d96be5dfd6800199733.png)
![](https://img-blog.csdnimg.cn/img_convert/20ada3c5898f696448659826f423c061.png)
2.9delete-by-query
![](https://img-blog.csdnimg.cn/img_convert/a2b2658a0b98716ae8631b2986c35aa7.png)
3.0复合查询
3.0.1bool查询
![](https://img-blog.csdnimg.cn/img_convert/55c6e59909d5303de46dac9c85599ce8.png)
POST /sms-logs-index/sms-logs-type/_search
{
"query":{
"bool":{
"should": [
{
"term": {
"province": {
"value": "北京"
}
}
},
{
"term": {
"province": {
"value": "南通"
}
}
}
],
"must_not": [
{
"term": {
"operatorId": {
"value": "2"
}
}
}
],
"must": [
{
"match": {
"smsContent": "恭喜"
}
},
{
"match": {
"smsContent": "黑卡"
}
}
]
}
}
}
View Code
3.0.2boosting查询
![](https://img-blog.csdnimg.cn/img_convert/95672fcc8b40299d5e46433519e6301c.png)
![](https://img-blog.csdnimg.cn/img_convert/97c76419ef3baa881d44043ef213ab56.png)
View Code
3.1filter查询
![](https://img-blog.csdnimg.cn/img_convert/0d0101e15227d9c8daf1ecdda36d2b36.png)
![](https://img-blog.csdnimg.cn/img_convert/1415398a5556bfc7cf4e879df97c1997.png)
View Code
3.2高亮查询
![](https://img-blog.csdnimg.cn/img_convert/cad1d1c0d82bb5bf52712d87f94c801a.png)
![](https://img-blog.csdnimg.cn/img_convert/addfa4ac8e83938d9d57bbeac5abfbda.png)
3.3聚合查询
![](https://img-blog.csdnimg.cn/img_convert/4d84f9cb581ab25db24d64ccef4feedf.png)
3.3.1去重计数查询(cardinality)
![](https://img-blog.csdnimg.cn/img_convert/1d634996ebf5af4aa61b9f09f027e35d.png)
3.3.2范围统计
![](https://img-blog.csdnimg.cn/img_convert/6deacdd7e74d5cae6f69ede2541d7a48.png)
![](https://img-blog.csdnimg.cn/img_convert/0d13c8eaa75df91b0da3d540b1400b72.png)
![](https://img-blog.csdnimg.cn/img_convert/eaca1b4632442efc0cde2e40b29989ca.png)
![](https://img-blog.csdnimg.cn/img_convert/210421c5427da35f6be69990e2d6cfac.png)
3.3.3统计聚合查询
![](https://img-blog.csdnimg.cn/img_convert/8b504968890c9ef1a75c599319d4a743.png)
![](https://img-blog.csdnimg.cn/img_convert/228f8cd376e012440289fb57b1edb6bc.png)
3.4地图经纬度查询
![](https://img-blog.csdnimg.cn/img_convert/c9cf31238e07b33011a821415b5b495a.png)
![](https://img-blog.csdnimg.cn/img_convert/6d243f4637cdee18d1837fe32b475ee9.png)
3.4.1地图检索方式
![](https://img-blog.csdnimg.cn/img_convert/ecbf9218cbfda3141397362c1e774a7b.png)
3.4.2基于RESTFUL实现地图检索
![](https://img-blog.csdnimg.cn/img_convert/75331b75ecc7f6a930fbfd038e751026.png)
![](https://img-blog.csdnimg.cn/img_convert/7b38f8be08cbc0ba2f22509bb107eb4f.png)
![](https://img-blog.csdnimg.cn/img_convert/b1704ae59aede8b463ad59c512ad3d20.png)
3.4.3java实现geo_polygon检索
@Test
public void geoPolygon() throws IOException {
//1.创建SearchRequest
SearchRequest request=new SearchRequest(index);
request.types(type);
//2.指定查询方式
SearchSourceBuilder builder = new SearchSourceBuilder();
List<GeoPoint> points=new ArrayList<>();
points.add(new GeoPoint(39.99878,116.298915));
points.add(new GeoPoint(39.972576,116.29561));
points.add(new GeoPoint(39.984739,116.327661));
builder.query(QueryBuilders.geoPolygonQuery("location",points));
request.source(builder);
//3.执行查询
SearchResponse rsp=client.search(request, RequestOptions.DEFAULT);
//4.输出结果
for (SearchHit hit:rsp.getHits().getHits()
) {
System.out.println(hit.getSourceAsMap());
}
}