Elasticsearch指南之Query DSL

Query DSL

Elasticsearch基于JSON提供了一个完整的查询DSL(领域特定语言)来定义查询。将查询DSL视为查询的AST(抽象语法树),由两种类型的子句组成:

叶查询子句

叶查询子句在特定字段中查找特定值,例如matchtermrange查询。这些查询可以自己使用。

复合查询子句

复合查询子句包装其他叶查询复合查询,并用于将多个查询以逻辑方式(如booldis_max查询),或更改它们的行为(如constant_score查询)。

查询子句的行为不同,具体取决于它们是否用于query context or filter context

允许代价高的查询

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

  • 需要执行线性扫描以识别匹配的查询:script queries

  • 具有高前期成本的查询:
    - 模糊查询(通配符字段除外)
    - Regexp查询(通配符字段除外)
    - 前缀查询(通配符字段除外)
    - 通配符查询(通配符字段除外)
    - 文本和关键字字段的范围查询

  • 连接查询

  • deprecated geo-shapes的查询

  • 每文档成本可能很高的查询:
    - script_score查询
    - 过滤查询

可以通过将search.allow_private_query设置的值设置为false(默认为true)来阻止此类查询的执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值