Saleor 33: 集成 - Elasticsearch 搜索


安装

Elasticsearch 搜索后端需要 Elasticsearch 服务器。为了开发目的,docker-compose 将创建一个运行Elasticsearch 服务器实例的 Docker 容器。

可以使用一组环境变量来配置集成。当您在 Heroku 上部署时,您可以使用提供 Elasticsearch 作为服务的附加组件。默认情况下,Saleor 使用Elasticsearch 5.4.3。

如果您正在其他地方部署,则可以使用以下服务之一:

环境变量

  • ELASTICSEARCH_URLBONSAI_URLSEARCHBOX_URL

    elasticsearch 引擎的网址。如果它是空的 - 搜索将不可用。例: https://user:password@my-3rdparty-es.com:9200

数据索引

Saleor 使用的Django Elasticsearch DSL 作为用于包装 Elasticsearch DSL 启用自动索引和同步。索引在文档文件中定义。请参考上述项目的文件以获得进一步的帮助。

初始搜索索引可以使用以下命令创建:

$ python manage.py search_index --rebuild

默认情况下,每次更改索引对象(产品,用户,订单)都会重新编制索引。

搜索集成架构

搜索后端使用 Elasticsearch DSL 在saleor / search / backends中查询定义。

为 elasticsearch 集成,店面管理后台定义了两个后端。店面搜索仅使用店面索引进行产品搜索,管理后台后端也在用户和订单索引中执行其他搜索。

测试

搜索功能有两个级别的测试。Elasticsearch 查询的语法由后端的单元测试来保证,集成测试使用 VCR.py 来模拟外部通信。如果搜索逻辑被修改,请确保记录新的通信并相应地调整测试流程!Pytest将在 CI 的永久记录模式下运行 VCR 以确保没有尝试进行通信,因此请确保最新的卡带始终包含在您的存储库中。