Сводка
У меня есть таблица DynamoDB, содержащая менее десяти элементов, которые я пытаюсь проиндексировать с помощью CloudSearch. Индексатор CloudSearch предлагает несуществующий атрибут с именем "l"
. Похоже, это происходит из-за ключа «list» DynamoDB JSON (который хранит массив объектов списка, в моем случае все строки). Несмотря на это, даже если я удалю этот ключ во время настройки поля индекса, я все равно получу следующую серьезную ошибку во время загрузки документа:
{["Field "l" does not exist in domain configuration (near operation with index 3; document_id null)",""add" operation must contain at least one "field" (near operation with index 5; document_id null)",""add" operation must contain at least one "field" (near operation with index 7; document_id null)","Field "l" does not exist in domain configuration (near operation with index 11; document_id null)",""add" operation must contain at least one "field" (near operation with index 13; document_id null)",""add" operation must contain at least one "field" (near operation with index 15; document_id null)","Field "l" does not exist in domain configuration (near operation with index 19; document_id null)",""add" operation must contain at least one "field" (near operation with index 21; document_id null)",""add" operation must contain at least one "field" (near operation with index 23; document_id null)","Field "l" does not exist in domain configuration (near operation with index 27; document_id null)",""add" operation must contain at least one "field" (near operation with index 29; document_id null)",""add" operation must contain at least one "field" (near operation with index 31; document_id null)","Field "l" does not exist in domain configuration (near operation with index 35; document_id null)",""add" operation must contain at least one "field" (near operation with index 37; document_id null)",""add" operation must contain at least one "field" (near operation with index 39; document_id null)"] }
Сведения
Здравствуйте! У меня есть таблица DynamoDB, содержащая менее десяти элементов, которые имеют ~ 35 атрибутов различного типа (строки, числа, списки строк и карты). Я пытаюсь проиндексировать эту таблицу с помощью CloudSearch через консоль aws gui. Когда я перехожу на страницу конфигурации индексного поля, большинство моих атрибутов отображаются, особенно отсутствуют списки. Однако индексатор предлагает "l"
согласно следующему изображению:
Я предполагаю, что это список ключей DynamoDB JSON. Я попытался сохранить и удалить это предложение, а также перейти к созданию поискового домена. В любом случае, через десять минут, когда я пытаюсь загрузить документы, я получаю вышеуказанную ошибку.
Я обнаружил, что удаление всех списков из моих элементов таблицы приводит к этому предложению "l"
исчезновение и возможная загрузка документа продолжаются, как и ожидалось.
Элементы таблицы DynamoDB создаются через API (используя интерфейс boto3 DynamoDB "Table
" согласно следующему:
body = {}
# body is populated as a regular python dict
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table("table_name")
table.put_item(Item = body, ConditionExpression = 'attribute_not_exists(ds_name)')
I Подумав, возможно, здесь есть крайний случай, и я должен использовать более явный клиентский интерфейс boto3 DynamoDB для создания элементов, но использование описанного выше метода работает без ошибок, и элемент выглядит полностью правильным и нормальным в средстве просмотра DynamoDB gui (как в древовидном, так и в текстовом режиме), а также из вызова API ".get_item()
".
Возможно, связано: Amazon CloudSearch создает нулевой идентификатор из DynamoDB