Saleor 33: 集成 - Elasticsearch 搜索
安装
Elasticsearch 搜索后端需要 Elasticsearch 服务器。为了开发目的,docker-compose 将创建一个运行Elasticsearch 服务器实例的 Docker 容器。
可以使用一组环境变量来配置集成。当您在 Heroku 上部署时,您可以使用提供 Elasticsearch 作为服务的附加组件。默认情况下,Saleor 使用Elasticsearch 5.4.3。
如果您正在其他地方部署,则可以使用以下服务之一:
环境变量
-
ELASTICSEARCH_URL
或BONSAI_URL
或SEARCHBOX_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 以确保没有尝试进行通信,因此请确保最新的卡带始终包含在您的存储库中。