我正在构建一个 Web 应用程序,它有一个 React 前端和一个用 NodeJS 构建的 graphql 后端服务。一个功能是搜索,我一直在探索 Elasticsearch。我注意到有像 React 的 react-search 这样的库可以让你连接到一个 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 签名)。如果你通过前端来做,你可能不得不暴露你的秘密,这显然不是一个好策略。
您应该考虑使用后端的另一个原因是,它可以让您更灵活地更有效地处理重大更改。例如,如果您正在更改结构,您可以修改后端以返回您的前端期望的结构。
我广泛使用 AWS Elasticsearch。如果您正在寻找任何特别的东西,请告诉我。
归档时间: |
|
查看次数: |
1776 次 |
最近记录: |