2015-11-05 74 views
5

我想似乎有3個可行的解決方案使用elasticsearch一個新的項目,並從我的研究:與elasticsearch交互在Django

  1. 不要使用包裝與elasticsearch
  2. 使用elasticsearch-直接溝通PY
  3. 使用elasticsearch-DSL-PY

我喜歡的解決方案1,因爲它不需要依賴,我可以集中精力學習本地語法/ API,而不是一個wrappe的r在2或3中。是否有任何令人信服的理由使用2或3超過1?

更新

我結束了使用elasticsearch-PY,因爲它提供諸如連接池和堅持各種好處。我發現elasticsearch-dsl-py太抽象和詳細了

+0

爲什麼不幹草堆? –

+0

@SandervanLeeuwen我遇到過許多使用Haystack和elasticsearch詳細描述問題的博客 – RunLoop

回答

3

我建議在官方Python客戶端可用時沒有理由直接與Elasticsearch對話。 Python客戶端爲你做了很多繁重的工作 - 否則你將花費大量的時間/精力將Python數據轉換爲ES,反之亦然。

至於elasticsearch-dsl-pyelasticsearch-py之間的選擇:

elasticsearch-dsl-py是隻有Query DSL(加上一些其他的東西)的包裝。它不提供對整個Elasticsearch API的訪問(例如,Cluster APIIndices APIBulk API等)。它在文檔中說:

要使用其他Elasticsearch API(例如羣集運行狀況),只需使用底層客戶端 。

很可能您需要在任何大型應用程序中使用這兩個庫。 elasticsearch-dsl-py本身使用elasticsearch-py

我同意您對Haystack的評論 - 這是Elasticsearch後端留下了許多不足之處。