微服务框架
【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】
SpringCloud微服务架构
文章目录
- 微服务框架
- SpringCloud微服务架构
- 22 DSL 查询语法
- 22.3 精确查询
- 22.3.1 精确查询
- 22.3.2 精确查询 - 语法
- 22.3.3 总结
22 DSL 查询语法
22.3 精确查询
22.3.1 精确查询
精确查询一般是查找keyword、数值、日期、boolean等类型字段。所以不会对搜索条件分词。
常见的有:
- term:根据词条精确值查询
- range:根据值的范围查询
【根据业务定】
22.3.2 精确查询 - 语法
精确查询常见的有term查询和range查询。语法如下:
term查询:
// term查询
GET /indexName/_search
{
"query": {
"term": {
"FIELD": {
"value": "VALUE"
}
}
}
}
试试
# term 查询
GET /hotel/_search
{
"query": {
"term": {
"city": {
"value": "上海"
}
}
}
}
直接运行
可以看到,查出了83 个【而且city 一定是“上海”】
值改成“杭州”
好家伙,我这没有杭州的【行吧,数据里面也没有】【而且不会对搜索值 进行分词】
range查询:
// range查询
GET /indexName/_search
{
"query": {
"range": {
"FIELD": {
"gte": 10,
"lte": 20
}
}
}
}
# range 查询
GET /hotel/_search
{
"query": {
"range": {
"price": {
"gte": 100,
"lte": 300
}
}
}
}
直接运行
OK, 查出来了50条,试试MySQL
select count(*) from tb_hotel where price >= 100 and price <= 300;
OK, 没啥问题,确实是 50 个满足价格在 100 ~ 300
- gte:大于等于
- lte:小于等于
- gt:大于
- lt:小于
22.3.3 总结
精确查询常见的有哪些?
- term查询:根据词条精确匹配,一般搜索keyword类型、数值类型、布尔类型、日期类型字段
- range查询:根据数值范围查询,可以是数值、日期的范围