我正在构建一个Web应用程序,该应用程序具有一个带有React的前端和一个由NodeJS生成的graphql后端服务。一个功能是搜索,我一直在探索Elasticsearch。我注意到有类似React的响应式(Reactive)搜索之类的库,它使您可以连接到Elasticsearch端点,还提供可以自行生成查询的UI组件,这使得为基本搜索设置起来非常容易,但对于自定义查询来说则非常复杂。因此,我决定从后端进行搜索,并通过graphql返回数据。我关心的是哪种连接方法更好,为什么。

注意:还包括有关Elasticsearch的所有最佳实践。我正在使用来自AWS的托管Elasticsearch集群。

最佳答案

使用Elasticsearch增强搜索功能时要记住的最重要的事情是具有在不停机的情况下切换索引的能力。为此,Elasticsearch Aliases进行了救援。您可以在此处阅读更多信息-https://www.elastic.co/guide/en/elasticsearch/reference/6.2/indices-aliases.html
简而言之,它位于索引的前面,因此您永远不会直接与前端的索引进行交互。它应该始终通过别名。如果需要在新索引中为数据重新编制索引,则只需切换别名即可。更像是蓝绿色的部署。
关于直接使用还是通过后端使用取决于使用情况。例如。如果您使用的是AWS Elasticsearch,并且需要某种身份验证,则应让后端与Elasticsearch对话(后端使用IAM角色来生成AWS签名)。如果通过前端执行此操作,则可能必须公开您的 secret ,这显然不是一个好的策略。
您应该考虑后端的另一个原因是,它使您可以灵活地更有效地处理重大更改。例如,如果您要更改结构,则可以只修改后端以返回前端期望的结构。
我已经广泛使用了AWS Elasticsearch。让我知道您是否正在寻找特定的东西。

关于Elasticsearch最佳实践: use directly from the frontend or from the backend,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59017877/

10-11 09:17