我想将elasticsearch用于一个新项目,从我的研究中,似乎有3个可行的解决方案:
>不要使用包装器并直接与elasticsearch进行通信
>使用elasticsearch-py
>使用elasticsearch-dsl-py
我喜欢解决方案1,因为它不需要依赖关系,我可以专注于学习本机语法/ api而不是2或3中的包装器.是否有任何令人信服的理由使用2或3超过1?
更新
我最终使用elasticsearch-py,因为它提供了连接池和持久性等各种好处.我发现elasticsearch-dsl-py太抽象和冗长
最佳答案
我建议当正式的Python客户端可用时,没有理由直接与Elasticsearch交谈. Python客户端为您做了很多繁重的工作 – 否则您将花费大量时间/精力将Python数据转换为ES,反之亦然.
关于elasticsearch-dsl-py和elasticsearch-py之间的选择:
elasticsearch-dsl-py只是Query DSL的包装(加上其他一些东西).它不提供对整个Elasticsearch API的访问(例如,Cluster API,Indices API,Bulk API等).它在文档中说:
To use the other Elasticsearch APIs (eg. cluster health) just use the
underlying client.
您很可能需要在任何大型应用程序中使用这两个库. elasticsearch-dsl-py本身使用elasticsearch-py.
我同意你对Haystack的评论 – 它的Elasticsearch后端还有很多不足之处.