0.创建
PUT s1/doc/1 { "name":"张三", "age":"23", "sex":"男" } PUT s1/doc/2 { "name":"李四", "age":"30", "sex":"男" } PUT s1/doc/3 { "name":"小六", "age":"18", "sex":"女" }
GET s1/doc/_search #查询所有
GET s1/doc/1 #指定查询
1.两种条件查询方式
①字符串查询
GET s1/doc/_search?q=age:23
②结构化查询(DSL)
GET s1/doc/_search { "query": { "match": { "age": "23" } } }
GET s18/doc/_search #查询所有
{
"query": {
"match_all": {}
}
}
2.修改指定字段
#只修改文档1中的 "age" ,其他不变
POST s1/doc/1/_update { "doc":{ "age":25 } }
3.排序sort
#降序
GET s1/doc/_search { "query": { "match_all": {} }, "sort": [ { "age": { "order": "desc" } } ] }
#升序
GET s1/doc/_search { "query": { "match_all": {} }, "sort": [ { "age": { "order": "asc" } } ] }
4.分页
#按索引从1的位置开始查,查2个
GET s1/doc/_search { "query": { "match_all": {} }, "from": 1, "size": 2 }
扫描二维码关注公众号,回复:
6262025 查看本文章
5.布尔查询:
1.should(or),must(and),must_not(not)
#①查询姓名是"张三",或者年龄是"18"的
GET s1/doc/_search { "query": { "bool": { "should": [ { "match": { "name": "张三" } }, { "match": { "age": "18" } } ] } } }
#②查询出年龄是30的男性
GET s1/doc/_search { "query": { "bool": { "must": [ { "match": { "sex": "男" } }, { "match": { "age": "30" } } ] } } }
#③查询出既不是男性,又不是30岁的
GET s1/doc/_search { "query": { "bool": { "must_not": [ { "match": { "sex": "男" } }, { "match": { "age": "30" } } ] } } }
2.大于(gt),大于等于(gte),小于(lt),小于等于(lte)
#①大于(其他类似)
查询大于25岁的男性
GET s1/doc/_search { "query": { "bool": { "must": [ { "match": { "sex": "男" } } ], "filter": { "range": { "age": { "gt": 25 } } } } } }
#②查询小于25岁的非男性
GET s1/doc/_search { "query": { "bool": { "must_not": [ { "match": { "sex": "男" } } ], "filter": { "range": { "age": { "lt": 25 } } } } } }
6.高亮查询
PUT s2/doc/1 { "name":"wangdi", "desc": "骚的打漂" } GET s2/doc/_search { "query": { "match": { "desc": "打漂" } }, "highlight": { #高亮显示查询的结果 "pre_tags": "<b style='color:red;font-size:20px;' class='wangdi'>", "post_tags": "</b>", "fields": { "desc": {} } } }
7.结果过滤
#①只将结果的姓名显示
GET s1/doc/_search { "query": { "match": { "name": "张三" } }, "_source": "name" }
#②将结果的姓名和年龄显示
GET s1/doc/_search { "query": { "match": { "name": "张三" } }, "_source": ["name","age"] }
8.聚合查询(sum,max,min,avg)
求男性的年龄总和
GET s1/doc/_search { "query": { "match": { "sex": "男" } }, "aggs":{ "my_sum":{ "sum": { "field": "age" } } } }
求男性的最大值
GET s1/doc/_search { "query": { "match": { "sex": "男" } }, "aggs":{ "my_max":{ "max": { "field": "age" } } } }
# 求所有人的平均值 avg GET s1/doc/_search { "aggs": { "my_avg": { "avg": { "field": "age" } } } }
9.分组
#根据年龄,10-20,,20-30, 30-50 进行分组
GET s1/doc/_search { "aggs": { "my_group":{ "range": { "field": "age", "ranges": [ { "from": 10, "to": 20 }, { "from": 20, "to": 30 }, { "from": 30, "to": 50 } ] } } } }
对分组结果进行求和
GET s1/doc/_search { "aggs": { "my_group":{ "range": { "field": "age", "ranges": [ { "from": 10, "to": 20 }, { "from": 20, "to": 30 }, { "from": 30, "to": 50 } ] }, "aggs":{ "my_sum":{ "sum":{ "field":"age" } } } } } }