与django中的elasticsearch进行交互

Run*_*oop 5 python django elasticsearch

我想将elasticsearch用于一个新项目,从我的研究中,似乎有3个可行的解决方案:

  1. 不要使用包装器并直接与elasticsearch进行通信
  2. 使用elasticsearch-py
  3. 使用elasticsearch-dsl-py

我喜欢解决方案1,因为它不需要依赖关系,我可以专注于学习本机语法/ api而不是2或3中的包装器.是否有任何令人信服的理由使用2或3超过1?

更新

我最终使用elasticsearch-py,因为它提供了连接池和持久性等各种好处.我发现elasticsearch-dsl-py太抽象和冗长

sol*_*oke 4

我建议当官方 Python 客户端可用时,没有理由直接与 Elasticsearch 对话。Python 客户端为您完成了许多繁重的工作 - 否则您将花费​​大量时间/精力将 Python 数据转换为 ES,反之亦然。

elasticsearch-dsl-py关于和之间的选择elasticsearch-py

elasticsearch-dsl-py仅是Query DSL的包装器(加上一些其他东西)。它不提供对整个 Elasticsearch API 的访问(例如Cluster APIIndices APIBulk API等)。它在文档中说:

要使用其他 Elasticsearch API(例如集群运行状况),只需使用底层客户端。

您很可能需要在任何大型应用程序中使用这两个库。elasticsearch-dsl-py本身使用elasticsearch-py.

我同意你对 Haystack 的评论 - 它的 Elasticsearch 后端还有很多不足之处。