Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门。本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
$util.transform包含帮助程序方法,使其易于对数据源执行复杂的操作,例如Amazon DynamoDB筛选器操作。
$util.transform.toDynamoDBFilterExpression(Map) :
Map
将输入字符串转换为筛选表达式,以便与配合使用DynamoDB.
Input:
$util.transform.toDynamoDBFilterExpression({
"title":{
"contains":"Hello World"
}
})
Output:
{
"expression" : "contains(#title, :title_contains)"
"expressionNames" : {
"#title" : "title",
},
"expressionValues" : {
":title_contains" : { "S" : "Hello World" }
},
}
$util.transform.toElasticsearchQueryDSL(Map) :
Map
将给定的输入转换为等效输入 OpenSearch 查询 DSL 表达式,同时将其作为 JSON 字符串返回。
Input:
$util.transform.toElasticsearchQueryDSL({
"upvotes":{
"ne":15,
"range":[
10,
20
]
},
"title":{
"eq":"hihihi",
"wildcard":"h*i"
}
})
Output:
{
"bool":{
"must":[
{
"bool":{
"must":[
{
"bool":{
"must_not":{
"term":{
"upvotes":15
}
}
}
},
{
"range":{
"upvotes":{
"gte":10,
"lte":20
}
}
}
]
}
},
{
"bool":{
"must":[
{
"term":{
"title":"hihihi"
}
},
{
"wildcard":{
"title":"h*i"
}
}
]
}
}
]
}
}
默认O运营商被假定为 AND。
$util.transform.toSubscriptionFilter(Map) :
Map
转换Map输入对象到SubscriptionFilter表达式对象。这些区域有:$util.transform.toSubscriptionFilter方法用作输入$extensions.setSubscriptionFilter()扩展名。有关更多信息,看到 扩展.
$util.transform.toSubscriptionFilter(Map, List) :
Map
转换Map输入对象到SubscriptionFilter表达式对象。这些区域有:$util.transform.toSubscriptionFilter方法用作输入$extensions.setSubscriptionFilter()扩展名。有关更多信息,请参阅 。扩展.
第一个参数是Map已转换为SubscriptionFilter表达式对象. T第二个论点是List以下字段名称是第一个被忽略Map构造时输入对象SubscriptionFilter表达式对象。
$util.transform.toSubscriptionFilter(Map, List, Map) :
Map
转换 Map输入对象到SubscriptionFilter表达式对象。这些区域有:$util.transform.toSubscriptionFilter方法用作输入$extensions.setSubscriptionFilter()扩展名。有关更多信息,请参阅 。扩展.
第一个参数是Map已转换为SubscriptionFilter表达式对象,第二个参数是List在第一个字段名称中将被忽略Map输入对象,第三个参数是Map构造时包含的严格规则的输入对象SubscriptionFilter表达式对象。这些严格的规则包括在SubscriptionFilter表达式对象的方式至少有一个规则将满足通过订阅过滤器。
这些区域有:以下桌子 解释了如何定义以下实用程序的参数:
-
$util.transform.toSubscriptionFilter(Map) : Map
-
$util.transform.toSubscriptionFilter(Map, List) : Map
-
$util.transform.toSubscriptionFilter(Map, List, Map) : Map
- Argument 1: Map
-
参数 1是Map具有以下键值的对象:
对于作为键的字段名称,这些字段条目的条件采用的形式为"operator" : "value".
以下示例显示了如何将条目添加到Map:
"field_name" : {
"operator1" : value
}
## We can have multiple conditions for the same field_name:
"field_name" : {
"operator1" : value
"operator2" : value
.
.
.
}
当一个字段上有两个或更多条件时,所有这些条件都被视为使用OR 操作。
输入Map也可以有 “and” 和 “或” 作为键,这意味着这些条目中的所有条目都应该根据密钥使用 AND 或 OR 逻辑来连接。关键值 “和” 和 “或” 期望有一系列条件。
"and" : [
{
"field_name1" : {
"operator1" : value
}
},
{
"field_name2" : {
"operator1" : value
}
},
.
.
].
请注意,你可以巢 “和” 和 “或”. 也就是说,你可以在另一个 “和”/“或” 块中嵌套 “和”/“或” 块中。但是,这不起作用对于简单的字段。
"and" : [
{
"field_name1" : {
"operator" : value
}
},
{
"or" : [
{
"field_name2" : {
"operator" : value
}
},
{
"field_name3" : {
"operator" : value
}
}
].
以下示例显示的输入:参数 1使用$util.transform.toSubscriptionFilter(Map) :
Map.
输入
参数 1::Map
{
"percentageUp": {
"lte": 50,
"gte": 20
},
"and": [
{
"title": {
"ne": "Book1"
}
},
{
"downvotes": {
"gt": 2000
}
}
],
"or": [
{
"author": {
"eq": "Admin"
}
},
{
"isPublished": {
"eq": false
}
}
]
}
输出
结果是Map对象:
{
"filterGroup": [
{
"filters": [
{
"fieldName": "percentageUp",
"operator": "lte",
"value": 50
},
{
"fieldName": "title",
"operator": "ne",
"value": "Book1"
},
{
"fieldName": "downvotes",
"operator": "gt",
"value": 2000
},
{
"fieldName": "author",
"operator": "eq",
"value": "Admin"
}
]
},
{
"filters": [
{
"fieldName": "percentageUp",
"operator": "lte",
"value": 50
},
{
"fieldName": "title",
"operator": "ne",
"value": "Book1"
},
{
"fieldName": "downvotes",
"operator": "gt",
"value": 2000
},
{
"fieldName": "isPublished",
"operator": "eq",
"value": false
}
]
},
{
"filters": [
{
"fieldName": "percentageUp",
"operator": "gte",
"value": 20
},
{
"fieldName": "title",
"operator": "ne",
"value": "Book1"
},
{
"fieldName": "downvotes",
"operator": "gt",
"value": 2000
},
{
"fieldName": "author",
"operator": "eq",
"value": "Admin"
}
]
},
{
"filters": [
{
"fieldName": "percentageUp",
"operator": "gte",
"value": 20
},
{
"fieldName": "title",
"operator": "ne",
"value": "Book1"
},
{
"fieldName": "downvotes",
"operator": "gt",
"value": 2000
},
{
"fieldName": "isPublished",
"operator": "eq",
"value": false
}
]
}
]
}
- Argument 2: List
-
参数 2包含List输入中不应考虑的字段名称Map(参数 1) 在构建SubscriptionFilter表达式对象。这些区域有:List也可以为空。
以下示例显示的输入:参数 1和参数 2使用$util.transform.toSubscriptionFilter(Map, List) : Map.
输入
参数 1::Map
{
"percentageUp": {
"lte": 50,
"gte": 20
},
"and": [
{
"title": {
"ne": "Book1"
}
},
{
"downvotes": {
"gt": 20
}
}
],
"or": [
{
"author": {
"eq": "Admin"
}
},
{
"isPublished": {
"eq": false
}
}
]
}
参数 2:列表:
["percentageUp", "author"]
输出
结果是Map对象:
{
"filterGroup": [
{
"filters": [
{
"fieldName": "title",
"operator": "ne",
"value": "Book1"
},
{
"fieldName": "downvotes",
"operator": "gt",
"value": 20
},
{
"fieldName": "isPublished",
"operator": "eq",
"value": false
}
]
}
]
}
- Argument 3: Map
-
参数 3是Map宾语那个将字段名称作为键值(不能有 “and” 或 “或”)。对于作为键的字段名称,这些字段的条件是以"operator" :
"value". 不像参数 1、参数 3在同一个密钥中不能有多个条件。此外,参数 3没有 “and” 或 “or” 条款,因此也不涉及嵌套。
参数 3表示严格规则的列表,这些规则被添加到SubscriptionFilter表达式对象所以那个至少有一个以下条件是见面通过过滤器。
{
"fieldname1": {
"operator": value
},
"fieldname2": {
"operator": value
}
}
.
.
.
以下示例显示的输入:参数 1、参数 2, 和参数 3使用$util.transform.toSubscriptionFilter(Map, List, Map) : Map.
输入
参数 1::Map
{
"percentageUp": {
"lte": 50,
"gte": 20
},
"and": [
{
"title": {
"ne": "Book1"
}
},
{
"downvotes": {
"lt": 20
}
}
],
"or": [
{
"author": {
"eq": "Admin"
}
},
{
"isPublished": {
"eq": false
}
}
]
}
参数 2:列表:
["percentageUp", "author"]
参数 3::Map
{
"upvotes": {
"gte": 250
},
"author": {
"eq": "Person1"
}
}
输出
结果是Map对象:
{
"filterGroup": [
{
"filters": [
{
"fieldName": "title",
"operator": "ne",
"value": "Book1"
},
{
"fieldName": "downvotes",
"operator": "gt",
"value": 20
},
{
"fieldName": "isPublished",
"operator": "eq",
"value": false
},
{
"fieldName": "upvotes",
"operator": "gte",
"value": 250
}
]
},
{
"filters": [
{
"fieldName": "title",
"operator": "ne",
"value": "Book1"
},
{
"fieldName": "downvotes",
"operator": "gt",
"value": 20
},
{
"fieldName": "isPublished",
"operator": "eq",
"value": false
},
{
"fieldName": "author",
"operator": "eq",
"value": "Person1"
}
]
}
]
}