Elasticsearch 官方说明:支持哪些查询 DSL?

作为目前最受欢迎的查询引擎,Elasticsearch 用户众多,深受大家的喜爱。

Elasticsearch 是一个分布式的开源搜索和分析引擎适用于所有类型的数据,包括文本、数字、地理空间、结构化和非结构化数据。Elasticsearch 在 Apache Lucene 的基础上开发而成

今天我们翻翻官方文档,看看都有哪些查询DSL


Elasticsearch 官方说明:支持哪些查询 DSL?

ES真的好,我们离不开它



  1. 全文查询(full text query)

这也是elasticsearch 不同于传统关系型数据库的能力,也是它的魅力所在,即支持全文查询。

支持如下几种查询:

  • match
  • match phrase
  • match phrase prefix
  • multi match
  • common terms
  • query string
  • simple query string

通常全文查询查询的是”文本“字段, 一般我们要配置合适的分词器(Analyzer)


  1. 词条查询(term level query)

支持如下几种查询:

  • term
  • terms
  • terms set
  • range
  • exists
  • prefix
  • wildcard
  • regexp
  • fuzzy
  • type
  • ids

通常这里的查询是不配置 analyzer 的,更像是传统数据库的 = , between 等查询

  1. 复合查询(compound queries)

支持如下几种查询:

  • constant score
  • function score
  • dis_max
  • boosting
  • bool
    • must
    • filter
    • should
    • must not

这里的查询是我们几乎必用的,考虑到性能和充分利用缓存,一般都是建议将查询嵌套起来;

另外可以编写脚本,实现自定义的打分工作

  1. 嵌套查询(joining query)

主要有: nested / has_child / has_parent

  1. 地理位置查询 (geo query)
  • geo_shape
  • geo_bounding_box
  • geo_distance
  • geo_polygon
  1. 其他

这里主要放一些没法分类的查询:

  • more_like_this
  • match_all
  • match_none
  • script
  • percolate
  • wrapper
  • minimum_should_match

最后,基于字符 span , elasticsearch 有一套我们几乎不会用的查询语法,即 span 查询, 了解即可。

以上这么多查询,我们真正在项目中需要牢牢掌握的,仍然只是其中的一小部分。

熟练掌握常用的,有需求是查询手册才是正确的学习方法。

最后放上一张个人整理的思维导图,喜欢就拿走吧。


Elasticsearch 官方说明:支持哪些查询 DSL?

elasticsearch query DSL


分享到:


相關文章: