ACSD-55100: GraphQL在搜索结果中未返回超过10,000的产品
ACSD-55100修补程序修复了以下问题:GraphQL不会返回搜索结果中超过 10k 的产品。 安装Quality Patches Tool (QPT) 1.1.46时,此修补程序可用。 修补程序ID为ACSD-55100。 请注意,该问题计划在Adobe Commerce 2.4.7中修复。
受影响的产品和版本
为Adobe Commerce版本创建了修补程序:
- Adobe Commerce(所有部署方法) 2.4.6
与Adobe Commerce版本兼容:
- Adobe Commerce(所有部署方法) 2.4.6 - 2.4.6-p3
magento/quality-patches
包更新到最新版本,并在Quality Patches Tool:搜索修补程序页面上检查兼容性。 使用修补程序ID作为搜索关键字来查找修补程序。问题
GraphQL不会返回搜索结果中超过 10k 的产品。
先决条件:
如果是 OpenSearch,请确保您使用的是最新的可用版本。
为了解决报告的问题,引入了时间点功能,该功能在 OpenSearch 2.5.0之后可用,并且需要opensearch-project/opensearch-php
包的版本2.2。
但是,magento/magento-cloud-metapackage
存在冲突,它指定了opensearch-project/opensearch-php
程序包上的依赖项,该程序包应小于版本2.0.1。
此依赖项阻止将[opensearch-project/opensearch-php]包更新到最新版本2.2。
因此,系统遇到以下错误,并针对超过 10,000 的产品返回null结果。
Namespace [createPointInTime] not found in /vendor/opensearch-project/opensearch-php/src/OpenSearch/Client.php:135
现有依赖关系使得直接向composer.json
文件添加版本并将opensearch-project/opensearch-php
包更新到版本2.2变得困难。
要解决此问题,请在主composer.json
文件中的require块下加入以下行。 之后,重新部署以将有问题的包更新到最新版本。
"opensearch-project/opensearch-php": "2.2.0 as 2.0.0",
重现步骤:
- 生成包含 15k 产品的目录。
- 发送GraphQL:
query {
products(
filter: {
# category_id:{eq:""}
}
, pageSize: 5, currentPage: 1
) {
total_count
page_info {
current_page
page_size
total_pages
}
aggregations {
attribute_code
count
label
options {
label
value
}
}
items {
uid
sku
is_for_clearance
categories {
name
breadcrumbs {
category_name
category_uid
}
display_mode
description
}
}
}
}
预期的结果:
Total_count = 15k
您应该能够显示所有产品。
实际结果:
Total_count = 10k
您不能在 10k 批次之后再显示任何产品。
应用修补程序
要应用单独的修补程序,请根据您的部署方法使用以下链接:
- Adobe Commerce或Magento Open Source内部部署: Quality Patches Tool指南中的Quality Patches Tool >使用情况。
- 云基础架构上的Adobe Commerce:云基础架构上的Commerce指南中的升级和修补程序>应用修补程序。
相关阅读
要了解有关Quality Patches Tool的更多信息,请参阅:
- Quality Patches Tool 已发布:支持知识库中用于自助提供高质量修补程序的新工具。
- 使用Quality Patches Tool指南中的 Quality Patches Tool检查修补程序是否可用于您的Adobe Commerce问题。
有关QPT中其他可用修补程序的信息,请参阅Quality Patches Tool指南中的Quality Patches Tool:搜索修补程序。