es7.x—查询篇
文章来源
- 查询基本语法结构
1.1 基础结构
1.2 query字节
1.3 aggs子句
1.4 sort子句
1.5 ES查询分页
1.6 _source
【es7.x—查询篇】通过ES查询表达式(Query DSL),可以实现复杂的查询功能,ES查询表达式主要由JSON格式编写,可以灵活的组合各种查询语句。1. 查询基本语法结构 1.1 基础结构
GET /{索引名}/_search
{
"from" : 0,// 返回搜索结果的开始位置
"size" : 10, // 分页大小,一次返回多少数据
"_source" :[ ...需要返回的字段数组... ],
"query" : { ...query子句... },
"aggs" : { ..aggs子句..},
"sort" : { ..sort子句..}
}
{索引名},支持支持一次搜索多个索引,多个索引使用逗号分隔,例子:
GET /order1,order2/_search
按前缀匹配索引名:搜索索引名以order开头的索引。
GET /order*/_search
当我们执行查询语句,返回的JSON数据格式如下
{
"took" : 5, // 查询消耗时间,单位毫秒
"timed_out" : false, // 查询是否超时
"_shards" : { // 本次查询参与的ES分片信息,查询中参与分片的总数,以及这些分片成功了多少个失败了多少个
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : { // hits字段包含我们搜索匹配的结果
"total" : { // 匹配到的文档总数
"value" : 1, // 找到1个文档
"relation" : "eq"
},
"max_score" : 1.0, // 匹配到的最大分值
"hits" : [
// 这里就是我们具体的搜索结果,是一个JSON文档数组
]
}
}
1.2 query字节 query子句主要用来编写类似SQL的Where语句,支持布尔查询(and/or)、IN、全文搜索、模糊匹配、范围查询(大于小于)。
es(1)—基础Rest API命令
es(2)—复杂的多条件查询(bool查询与constant_score查询)
es(4)—查询条件match和term
es(5)—terms的用法
es7.x(6)—minimum_should_match最低匹配度
es7.x(7)—短语搜索(match_phrase)
es7.x(8)— 多字段匹配检索 multi_match query
es7.x(9)— match query的参数
1.3 aggs子句 aggs子句,主要用来编写统计分析语句,类似SQL的group by语句
es7.x(10)aggs聚合查询
1.4 sort子句 sort子句,用来设置排序条件,类似SQL的order by语句。
ES的默认排序时根据相关性分数排序,如果我们想根据查询结果中的指定字段排序,需要使用
sort
关键字处理。语法:
GET /{索引名}/_search
{
"query": {
...查询条件....
},
"sort": [
{
"{Field1}": { // 排序字段1
"order": "desc" // 排序方向,asc或者desc, 升序和降序
}
},
{
"{Field2}": { // 排序字段2
"order": "desc" // 排序方向,asc或者desc, 升序和降序
}
}
....多个排序字段.....
]
}
sort子句支持多个字段排序,类似SQL的order by。
例子:
GET /order_v2/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"order_no": {
"order": "desc"
}
},
{
"shop_id": {
"order": "asc"
}
}
]
}
查询order_v2索引的所有结果,结果根据order_no字段降序,order_no相等的时候,再根据shop_id字段升序排序。
1.5 ES查询分页 ES查询的分页主要通过from和size参数设置,类似MYSQL 的limit和offset语句。
GET /order_v2/_search
{
"from": 0,
"size": 20,
"query": {
"match_all": {}
}
}
1.6 _source _source用于设置查询结果返回什么字段,类似select语句后面指定字段。
GET /order_v2/_search
{
"_source": ["order_no","shop_id"],
"query": {
"match_all": {}
}
}
仅返回,order_no和shop_id字段。
推荐阅读
- 急于表达——往往欲速则不达
- 慢慢的美丽
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 2019-02-13——今天谈梦想()
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- Ⅴ爱阅读,亲子互动——打卡第178天
- 低头思故乡——只是因为睡不着
- 取名——兰
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- mybatisplus如何在xml的连表查询中使用queryWrapper