目录
2.1.1term查询(我试了下province没有办法查询,需到后面加个.keyword)
=
一、创建表结构:

二、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 |
|
2.1.2terms查询

| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
2.2match_all&match查询
2.2.1match_all

| 1 2 3 4 5 6 |
|
注:ES默认查询10条数据
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
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 |
|
2.2.3布尔match查询


| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
2.2.4mulitMatch查询

| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
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.8深分页Scroll



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());
}
}
这篇博客详细介绍了Elasticsearch(ES)的多种查询方式,包括term和terms查询、match_all和match查询、布尔match、multiMatch、id和ids查询、prefix、fuzzy、wildcard、range、regexp查询,以及深分页Scroll、delete-by-query操作。此外,还涉及到了bool、boosting、filter、高亮、聚合查询等复合查询,特别是地理坐标查询的实现,包括RESTFUL和Java API的应用。
2801

被折叠的 条评论
为什么被折叠?



