配置插件 - Amazon Personalize
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

配置插件

安装 Amazon Personalize 搜索排名插件后,就可以通过创建 OpenSearch 搜索管道对其进行配置了。

搜索管道 是一组请求和响应处理器,可按照您创建此类处理器的顺序依次对其运行。为插件创建搜索管道时,指定 personalized_search_ranking 响应处理器。有关搜索管道的信息,请参阅搜索管道

personalized_search_ranking 响应处理器的字段

对于 personalized_search_ranking 响应处理器,您需指定以下字段:

  • campaign_arn(必填) - 指定用于对结果进行个性化设置的 Amazon Personalize 市场活动的 Amazon 资源名称 (ARN)。

  • item_id_field(可选)— 如果中已编入索引的文档的_id字段与您的 Amazon Personalize ItemID OpenSearch 不对应,请指定与之对应的字段名称。默认情况下,该插件假定 _id 数据与 Amazon Personalize 数据中的 itemId 相匹配。

  • 食谱(必填) - 指定要使用的 Amazon Personalize 食谱的名称。您只能指定 aws-personalized-ranking

  • 权重(必填) - 指定响应处理器在重新对结果排名时对个性化的重视程度。指定一个介于 0.0 至 1.0 范围内的值。该值越接近 1.0,Amazon Personalize 结果排名越高的可能性越大。如果您指定0.0,则不会进行个性化设置,并且 OpenSearch 优先考虑。

  • 标签(可选) - 指定处理器的标识符。

  • iam_role_arn( OpenSearch 服务为必填项,开源为可选 OpenSearch)— 对于服务 OpenSearch ,请提供您在设置服务访问您的 Amazon Personalize 资源的权限时创建的角色的亚马逊资源名称 (ARN)。 OpenSearch 如果您的 OpenSearch 服务和 Amazon Personalize 资源存在于不同的账户中,请指定授予 OpenSearch 服务AssumeRole权限的角色。有关更多信息,请参阅在资源属于不同账户时配置权限

    对于开源 OpenSearch,如果您使用多个角色来限制组织中不同用户组的权限,请指定有权访问 Amazon Personalize 的角色的 ARN。如果您仅使用 OpenSearch 密钥库中的 Amazon 凭据,则可以省略此字段。

  • aws_region(必填)— 您创建 Amazon Personalize 活动所在的地 Amazon 区。

  • ignore_failure(可选) - 指定插件是否忽略任何处理器故障。对于值,指定 truefalse。对于您的生产环境,我们建议您指定 true 以免查询响应出现中断。对于测试环境,您可以指定 false 以查看插件生成的任何错误。

  • external_account_iam_role_arn — 如果您使用服务, OpenSearch 并且您的亚马逊个性化和 OpenSearch 服务资源存在于不同的账户中,请指定有权访问亚马逊个性化的角色的 ARN。此角色必须与您的 Amazon Personalize 资源位于同一个账户中。有关更多信息,请参阅在资源属于不同账户时配置权限

使用 Amazon OpenSearch 服务创建管道

您可以使用以下 Python 代码在 OpenSearch 服务域上创建带有personalized_search_ranking响应处理器的搜索管道。将 domain endpoint 替换为您的域端点 URL。例如:https://<domain name>.<Amazon region>.es-staging.amazonaws.com

import requests from requests_auth_aws_sigv4 import AWSSigV4 domain_endpoint = 'domain endpoint' pipeline_name = 'pipeline name' url = f'{domain_endpoint}/_search/pipeline/{pipeline_name}' auth = AWSSigV4('es') headers = {'Content-Type': 'application/json'} body = { "description": "A pipeline to apply custom re-ranking from Amazon Personalize", "response_processors": [ { "personalized_search_ranking" : { "campaign_arn" : "Amazon Personalize Campaign ARN", "item_id_field" : "productId", "recipe" : "aws-personalized-ranking", "weight" : "0.3", "tag" : "personalize-processor", "iam_role_arn": "Role ARN", "aws_region": "Amazon region", "ignore_failure": true } ] } try: response = requests.put(url, auth=auth, json=body, headers=headers, verify=False) print(response.text) except Exception as e: print(f"Error: {e}")

使用personalized_search_ranking响应处理器创建搜索管道后,就可以开始将该插件应用于 OpenSearch 查询了。您可以将其应用于 OpenSearch 索引或单个 OpenSearch 查询。有关更多信息,请参阅将插件应用于 OpenSearch 查询

使用开源创建管道 OpenSearch

您可以使用以下 curl 命令在开源 OpenSearch 集群上创建带有personalized_search_ranking响应处理器的搜索管道。

curl -X PUT "http://localhost:9200/_search/pipeline/pipeline-name" -ku 'admin:admin' --insecure -H 'Content-Type: application/json' -d' { "description": "A pipeline to apply custom re-ranking from Amazon Personalize", "response_processors" : [ { "personalized_search_ranking" : { "campaign_arn" : "Amazon Personalize Campaign ARN", "item_id_field" : "productId", "recipe" : "aws-personalized-ranking", "weight" : "0.3", "tag" : "personalize-processor", "iam_role_arn": "Role ARN", "aws_region": "Amazon region", "ignore_failure": true } } ] }'

使用personalized_search_ranking响应处理器创建搜索管道后,就可以开始将该插件应用于 OpenSearch 查询了。您可以将其应用于 OpenSearch 索引或单个 OpenSearch 查询。有关更多信息,请参阅将插件应用于 OpenSearch 查询