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


分享到:


相關文章: