【问题标题】:Increase app performances with ElasticSearch on NodeJS在 NodeJS 上使用 ElasticSearch 提高应用程序性能
【发布时间】:2016-05-03 11:42:31
【问题描述】:

我没有找到我要找的确切内容,也没有人解释我,所以我在这里问。希望这不是重复的……

我有一个使用 ORM sequelize 和 MySQL 数据库在 NodeJS 上运行的应用程序。该项目在一年前开始。

我现在想提高性能等,安装 ElasticSearch。但我不确定我是否可以。

我可以告诉我的弹性服务器,我的数据库在哪里,神奇的是,它单独进行映射吗? 或者我必须在 elasticSearch 上插入我的数据吗?

我所有的基础设施都托管在 AWS 上,我使用的是 RDS。可能会有所帮助吗? 实际上我不知道在哪里放置 elasticSearch 层?你有什么想法可以帮助我。

因为,我已经使用过 Symfony 和 FosElasticaBundle,但效果很好,我不知道如何。

【问题讨论】:

  • 你可能想试试discuss.elastic.co 我怀疑你的问题对于 Stackoverflow 来说太宽泛了
  • 谢谢@DougT.,我将把这个问题发到那里,如果我有答案,我会回来在这里发布答案。

标签: mysql node.js database elasticsearch sequelize.js


【解决方案1】:

UDPATE:

  • 你可以使用 ES http api
  • 您数据库中的现有数据可以批量索引
  • 您必须处理数据库中的更改,因此您可以使用观察模式,例如created()、saved()、deleted(),这样您就可以在这些方法中处理ES 操作来创建、更新或删除一份文件

Elasticsearch (ES) 是一种速度机器,具有很多可能性(高级查询、统计数据等),而不是数据库(在此处阅读原因:https://www.elastic.co/blog/found-elasticsearch-as-nosql)。

  • 它是分布式的(可以通过多个服务器工作/共享工作)
  • 它是基于文档的(json 文档,例如具有嵌套的父/子关系)
  • 它基于映射
  • 它基于索引

更多:https://www.elastic.co/products/elasticsearch

您可以在 ES 中使用类型(如数据库中的表)。

ES 使用基于映射的索引数据。因此,您仍然需要一个数据库并将数据(非规范化)索引到 ES。您可以查询、过滤、聚合、分析索引中的数据。

【讨论】:

  • 是的,但是如果我已经有一个数据库怎么办?使用我的 ORM 吗?如何通知弹性搜索,有新条目?我是否必须从弹性搜索中选择并手动插入/更新到 mysql 数据库?我有点困惑
  • 我首先要做的是优化我现有的应用程序,然后再尝试添加更多层(现在)。但我会记住你的建议。感谢您的回答,非常感谢。 @Schellingerht
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-06
  • 1970-01-01
  • 2010-11-12
  • 1970-01-01
  • 2021-07-30
相关资源
最近更新 更多