微服务框架 SpringCloud微服务架构 22 DSL 查询语法 22.1 DSL 查询分类和基本语法
微服务框架
【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】
SpringCloud微服务架构
文章目录
- 微服务框架
- SpringCloud微服务架构
- 22 DSL 查询语法
- 22.1 DSL 查询分类和基本语法
- 22.1.1 DSL Query 的分类
- 22.1.2 DSL Query 基本语法
- 22.1.3 总结
22 DSL 查询语法
22.1 DSL 查询分类和基本语法
22.1.1 DSL Query 的分类
Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。
官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html
常见的查询类型包括:
-
查询所有:查询出所有数据,一般测试用。例如:match_all
-
全文检索(full text)查询:利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如【两种较为常见的】:
- match_query
- multi_match_query
-
精确查询:根据精确词条值查找数据,一般是查找keyword、数值、日期、boolean等类型字段。例如:
- ids
- range
- term
-
地理(geo)查询:根据经纬度查询。例如:
- geo_distance
- geo_bounding_box
-
复合(compound)查询:复合查询可以将上述各种查询条件组合起来,合并查询条件。例如:
- bool
- function_score
22.1.2 DSL Query 基本语法
查询的基本语法如下:
GET /indexName/_search
{
"query": {
"查询类型": {
"查询条件": "条件值"
}
}
}
_search 是固定写法,代表做搜索
【举个栗子】:查询所有
// 查询所有
GET /indexName/_search
{
"query": {
"match_all": {
}
}
}
试试
# 查询所有
GET /hotel/_search
{
"query": {
"match_all": {}
}
}
直接运行
OK, 201 条,全部文档都查出来了
整体来说,返回结果是一个“对象”,其中有很多属性
-
took:花费时间
-
timed_out:是否超时
-
_shards:
-
hits:命中的数据
-
total:总数
-
max_score:文档相关性得分
-
hits:真正的文档数据【一个数组】
每一项都是一个文档
【默认显示10条】
-
22.1.3 总结
查询DSL的基本语法是什么?
- GET /索引库名/_search
- { “query”: { “查询类型”: { “FIELD”: “TEXT”}}}