我正在使用django,haystack和Elasticsearch堆栈构建搜索应用程序。但我想添加angularjs。我的问题是:

哪种替代方法对angularjs更好地接收数据并在搜索应用中进行处理:
1.使用elasticsearch.js Angular 库直接在elasticsearch中查询数据
2.或者从干草堆中获取数据并开始使用它。因此,它是唯一可以与elasticsearch通信的草垛。

谢谢!

最佳答案

这可能取决于您要保重的程度。重型卡车起初可能会受到一点伤害,但可能会带来红利。如果您的目标较小或更短(玩具项目或原型(prototype)),则减少运动部件可能会更好。

如果您全力以赴:

ES 干草堆 django 角形

那么您将获得以下胜利:

如果您决定不喜欢ES并想使用solr ,则

  • 换出后端
  • 您可以使用干草堆来抽象,而不必编写血腥的原始查询
  • 如果您必须编写gory原始查询,则haystack会比一些Javascript意大利面条
  • 更好地包装它们
  • django本身很棒,如果您要构建一些琐碎的东西,则保持整洁要容易得多,而不是完全放在浏览器中
  • 如果您从pordbms(普通的旧式关系数据库管理系统;)等其他数据源中提取,django会再次减少头部爆炸
  • 不同数据源的任何混合/处理都将再次变得容易得多,并且可以隐藏在django服务器暴露
  • 的任何路由之后
  • 因为所有繁重的工作都发生在服务器端,所以您的前端可以仅以最小的逻辑停留在前端。这将使其更清洁,更易于维护,并减轻了您必须返回给客户端的js负载的负担。

  • 因此,对于这种方法有很多话要说,但是可能还有很多需要建立的方法。如果只需要一个由ES中的数据驱动的前端,那么您可以拥有一个直接查询ES的厚前端。一些胜利在这里:
  • angular可以使您需要进行的所有REST请求都不必太麻烦
  • ES可以接收所有这些REST请求
  • 他们俩本机都使用json,所以这不像您必须处理序列化/反序列化的麻烦(不是它们在python中会很大,但在这里不是问题)
  • 但是这可以双向进行,如果您遇到客户无法轻松处理的非常复杂的查询,您可能会发现自己对原始javascript对象的处理确实很肮脏,
  • 被警告
  • 用于配置,部署,测试,诅咒等的 Activity 部件更少。
  • 当您开始对此堆栈感到烦恼时,您至少可以删除查询,而不必从头开始编写所有查询

  • 我已经在Solr / haystack / django / backbone的一个堆栈上工作,关注点和隐藏/抽象的分离非常好。我不必从头开始设置整个堆栈,这是一个现有项目,我在其中添加/重新写入了一些较大的块。

    我还使用过ES /节点/角堆栈,在那里我从头开始设置了绝大多数堆栈。安装速度足够快。简单的东西很容易。当它变得更大时,我觉得很难在代码上施加足够的纪律以保持其真正干净。因此,这是一种危险的情况,一旦查询全部正常,您就会慢慢退出,并希望没有新的功能请求进入(老实说,它们总是这样做)。但是,如果这只是一个小项目,或者您只是想尝试一些新东西,或者希望它快速而不是强大,那么这可能是开始的方式,那么您可以在开始时添加其他部分撞墙。

    07-24 09:39
    查看更多