我需要一种方法来管理与托管 Elastic Search 提供商的连接,以加快我网站上的搜索速度。我们在 Heroku 上运行 Django,使用 Found ElasticSearch 插件和 pyes,它是一个 ElasticSearch Python 库。
使用 pyes 建立与 ElasticSearch 的连接的标准方法是将提供程序 URL 传递给 ES 对象,如下所示:
(1)connection = ES(my_elasticsearch_url)
Pyes 在幕后使用 ES 对象建立到我的 ElasticSearch 提供程序的开放 HTTP 连接,因此我可以像这样运行搜索:
(2)results = connection.search(some_query, index_name)
以前,我在 Django 视图中执行这两个步骤以进行搜索——每次用户进行搜索时,它都会打开一个新的 HTTP 连接,然后运行搜索。因此,搜索调用很慢。
我通过将 (1) 移动到我的应用程序文件中来加快搜索速度__init__.py
——现在,我只设置了一次连接,并将其导入到搜索视图中。但我担心如果很多人同时尝试搜索,它会阻塞 HTTP 连接。
我正在寻找有关如何设置连接池的想法,在应用程序启动时启动它们,然后根据需要将它们分配到我的搜索视图中。理想情况下,我希望能够轻松地上下缩放池的大小,而只需对我的代码进行最少的更改。
我可以想出几种方法来解决它,但这似乎是一个常见的与计算相关的问题,所以我相信你们中的很多人都对这样一个系统的良好设计和最佳实践有想法。我很想听听他们的意见。
非常感谢!
黏土