目录
一、创建表结构:
二、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检索
=
一、创建表结构:

二、ES的各种查询
2.1term&terms查询
2.1.1term查询(我试了下province没有办法查询,需到后面加个.keyword)

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查询

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

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查询

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查询


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查询

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查询


@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查询

@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查询

@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查询

@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查询

2.7range查询

2.7regexp查询




2.9delete-by-query

3.0复合查询
3.0.1bool查询

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查询


View Code
3.1filter查询


View Code
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检索
@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());
}
}