Я сталкиваюсь с подобной проблемой, используя boto3, запрос не работает, хотя он работает на консоли.
Сначала я попытался выполнить сканирование без успеха:
text = 'city:barcelona'
filter_expr = Attr('timestamp').between('2020-04-01', '2020-04-27')
filter_expr = filter_expr & Attr('text').eq(text)
table.scan(FilterExpression = filter_expr, Limit = 1000)
Затем я обратите внимание, что для переменной text
, которая не содержит ":", сканирование работает. Итак, я попробовал это второе сканирование, используя ExpressionAttributeNames и ExpressionAttributeValues
table.scan(
FilterExpression = "#n0 between :v0 AND :v1 AND #n1 = :v2",
ExpressionAttributeNames = {'#n0': 'timestamp', '#n1': 'text'},
ExpressionAttributeValues = {
':v0': '2020-04-01',
':v1': '2020-04-27',
':v2': {"S": text}},
Limit = 1000
)
Не удалось снова.
В конце, если я изменю в первом примере:
-
text = 'barcelona'
filter_expr = filter_expr & Attr('text').contains(text)
Я могу получить записи. ИМО, понятно, что проблема в ":"
Есть ли другой способ поиска по текстам с символом ":"?