match_all:匹配所有
match:分词单个匹配 【分词包含query,就可以被检索到,类似contains包含】
multi_match:分词多个匹配 【任何一个分词包含query,就可以被检索到】
term:全词单个匹配
terms:全词多个匹配
bool:组合查询
range:范围查询
aggs:聚合查询
query可以理解为SQL里面的where
1.1 查询全部
可以通过以下两种方式查询所有数据
下面两种查询完全等价
POST 索引/_search
{"query": {"match_all": {}}
}
GET 索引/_search
1.2 匹配查询
POST 索引/_search
{"query": {"match": {"name": "收藏"}}
}
1.3 字段匹配查询
POST 索引/_search
{"query": {"multi_match": {"query": "test", "fields": ["name", "tag"]}}
}
1.4 关键字精确查询
单个匹配
GET /索引/_search
{"query": {"term": {"id" : 1229}}
}
多个匹配
GET /索引/_search
{"query": {"terms": {"id" : [1229, 2338]}}
}
1.5 指定查询字段
只返回_source指定的字段
GET /索引/_search
{"query": {"match_all": {}}, "_source": ["id", "name"]
}
1.6 过滤字段
"excludes”:指定排除字段
“Includes”:指定查询字段
GET /索引/_search
{"query": {"match_all": {}}, "_source": {"excludes": ["id", "name"]}
}
1.7 组合查询
Bool 前置条件字段
Must ==
must_not !=
should or
GET /索引/_search
{"query": {"bool": {"must": [{"match": {"price" : 29}},{"match": {"name" : "3.9收藏test"}}]}}
}
1.8 范围查询
Range 潜质查询条件
Gt >
Gte >=
Lt <
lte <=
GET /索引/_search
{"query": {"range": {"price": {"gte": 10,"lte": 20}}}
}
1.9 模糊查询
[fuzziness]编辑距离是将一个术语转换为另一个术语所需的一个字符更改的次数。 这些更改可以包括:
- 更改字符(box→fox)
- 删除字符(black→lack)
- 插入字符(sic→sick)
- 转置两个相邻字符(act→cat)
GET /索引/_search
{"query": {"fuzzy": {"name": {"value": "藏收", "fuzziness": 2}}}
}
1.10 排序
sort 前置字段
Desc 降序
asc 生序
GET /索引/_search
{
"query": {"match_all": {}},"sort": [{"price": {"order": "desc"}},{"age": {"order": "desc"}}]
}
1.11 分页查询
- from:当前页的起始索引,默认从0开始, from = (pageNum - 1) * size,页数从第一页开始
- size:每页显示多少条
GET /索引/_search
{
"query": {"match_all": {}},"from": 0,"size": 2
}
1.12 聚合操作(博大精深,还有很多种)
stats聚合,对某个字段一次性返回count,max,min,avg和sum五个指标
- stats_aggs:聚合名称,任意
- stats:聚合种类,其中指定需要聚合字段
- Price:索引的其中一个字段
GET /索引/_search
{"aggs": {"state_aggs": {"stats": {"field": "price"}}}
}
结果:
{
…,
“aggregations” : {
“stats_aggs” : {
“count” : 5,
“min” : 2.0,
“max” : 5.0,
“avg” : 3.4,
“sum” : 17.0
}
}
}
示例:
Size 表示输出多少个
GET /索引/_search
{"query": {"term": {"name": {"value": "test"}}},"sort": [{"price": {"order": "desc"}}],"aggs": {"group": {"terms": {"field": "price","order": {"_count": "desc"}, "size": 10}}}
}