2015-11-05 24 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后端留下了许多不足之处。