查询DSL
edit查询DSL
editElasticsearch 提供了一个基于 JSON 的完整查询 DSL(领域特定语言)来定义查询。 将查询 DSL 视为查询的 AST(抽象语法树),由两种类型的子句组成:
查询子句的行为会根据它们是在查询上下文还是过滤上下文中使用而有所不同。
- Allow expensive queries
-
某些类型的查询由于其实现方式,通常执行速度较慢,这可能会影响集群的稳定性。 这些查询可以分类如下:
-
需要进行线性扫描以识别匹配项的查询:
-
scriptqueries - queries on numeric, date, boolean, ip, geo_point or keyword fields that are not indexed but have doc values enabled
-
-
具有高前期成本的查询:
-
fuzzyqueries (except onwildcardfields) -
regexpqueries (except onwildcardfields) -
prefixqueries (except onwildcardfields or those withoutindex_prefixes) -
wildcardqueries (except onwildcardfields) -
rangequeries ontextandkeywordfields
-
- Joining queries
-
可能具有高单文档成本的查询:
-
可以通过将 search.allow_expensive_queries 设置的值设置为 false(默认为 true)来防止执行此类查询。