DSL 介绍
Query DSL(Domain Specific Language)又叫做查询表达式,是一种丰富的、灵活的、强大的全文本与结构化查询语言,基于 JSON 格式对数据进行检索。前面我们介绍了简单的 ES 查询,但是对于更负责的需求使用 URL 查询显得有些困难,ES 提供了 DSL 查询,使用 DSL 表达式基本上满足各种负责的业务需求,DSL 可以与数据库提供的 SQL 进行类别,有了 SQL 各种查询都可以在数据库中实现,而不用把查询计算逻辑放到业务代码中去。
ES 的查询有两种查询与过滤,ES 的查询涉及到一个重要的概念就是相关性分数,这个分数在 ES 查询结果中 _score 字段中体现出来。像你在 Google 或者百度中查询资料时候,往往是以一种推荐的方式返回查询结果给你,并且有顺序的,排在前面的往往是与你查询问题最接近的内容,这里面就涉及到一个相关性分数,查询的每个结果都有一个相关性分数。
另外还有一种查询方式叫做过滤,过滤的查询结果中是不带有相关性分数的,因为有的时候我们只关注有或者没有,显而易见,不带有相关性分数的少了一层计算相关性分数的过程,那么自然计算速度会比较快。
第一个 DSL 查询,查询索引为 class 的所有数据。
GET class/_search
{
"query": {
&#