原英文版地址: https://www.elastic.co/guide/en/elasticsearch/reference/7.7/query-dsl.html, 原文档版权归 www.elastic.co 所有
本地英文版地址: ../en/query-dsl.html

Query DSL: 使用领域专用语言进行查询

Elasticsearch 提供了一个完整的基于 JSON 的 Query DSL(Domain Specific Language, 领域专用语言)来定义查询。 可以把 Query DSL 想象成查询的 AST(Abstract Syntax Tree, 抽象语法树),由两种类型的子句组成:

叶子查询子句 (leaf query clauses)
叶子查询子句查找特定字段中的特定值,例如 matchtermrange 查询。 这些查询可以单独使用。
复合查询子句 (compound query clauses)
复合查询子句包裹其他叶子查询 复合查询,用于以逻辑方式组合多个查询(如 booldis_max查询),或改变它们的行为(如 constant_score 查询)。

根据查询子句是用于 query 还是 filter 的上下文 中,它们的行为会有所不同。

允许执行昂贵的查询

某些类型的查询通常会因其实现方式而执行缓慢,这会影响集群的稳定性。 这些查询可以分类如下:

通过将 search.allow_expensive_queries设置为false (默认为 true),可以防止执行此类查询。