Для запроса таблицы в первую очередь требуется выбрать таблицу, указать ключ раздела и выполнить запрос; с возможностью использования вторичных индексов и выполнения более глубокой фильтрации с помощью операций сканирования.
Используйте GUI Console, Java или другой вариант для выполнения задачи.
Таблица запросов с использованием консоли GUI
Выполните несколько простых запросов, используя ранее созданные таблицы. Сначала откройте консоль по адресу https://console.aws.amazon.com/dynamodb.
Выберите Таблицы на панели навигации и выберите Ответить из списка таблиц. Затем выберите вкладку « Элементы », чтобы увидеть загруженные данные.
Выберите ссылку на фильтрацию данных («Сканировать: [Таблица] Ответить») под кнопкой « Создать элемент» .
На экране фильтрации выберите Запрос для операции. Введите соответствующее значение ключа раздела и нажмите « Пуск» .
Таблица ответов затем возвращает соответствующие элементы.
Таблица запросов с использованием Java
Используйте метод запроса в Java для выполнения операций поиска данных. Требуется указать значение ключа раздела, причем ключ сортировки необязателен.
Кодируйте Java-запрос, сначала создав объект querySpec с описанием параметров. Затем передайте объект в метод запроса. Мы используем ключ раздела из предыдущих примеров.
Вы можете просмотреть следующий пример —
import java.util.HashMap; import java.util.Iterator; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient; import com.amazonaws.services.dynamodbv2.document.DynamoDB; import com.amazonaws.services.dynamodbv2.document.Item; import com.amazonaws.services.dynamodbv2.document.ItemCollection; import com.amazonaws.services.dynamodbv2.document.QueryOutcome; import com.amazonaws.services.dynamodbv2.document.Table; import com.amazonaws.services.dynamodbv2.document.spec.QuerySpec; import com.amazonaws.services.dynamodbv2.document.utils.NameMap; public class ProductsQuery { public static void main(String[] args) throws Exception { AmazonDynamoDBClient client = new AmazonDynamoDBClient() .withEndpoint("http://localhost:8000"); DynamoDB dynamoDB = new DynamoDB(client); Table table = dynamoDB.getTable("Products"); HashMap<String, String> nameMap = new HashMap<String, String>(); nameMap.put("#ID", "ID"); HashMap<String, Object> valueMap = new HashMap<String, Object>(); valueMap.put(":xxx", 122); QuerySpec querySpec = new QuerySpec() .withKeyConditionExpression("#ID = :xxx") .withNameMap(new NameMap().with("#ID", "ID")) .withValueMap(valueMap); ItemCollection<QueryOutcome> items = null; Iterator<Item> iterator = null; Item item = null; try { System.out.println("Product with the ID 122"); items = table.query(querySpec); iterator = items.iterator(); while (iterator.hasNext()) { item = iterator.next(); System.out.println(item.getNumber("ID") + ": " + item.getString("Nomenclature")); } } catch (Exception e) { System.err.println("Cannot find products with the ID number 122"); System.err.println(e.getMessage()); } } }
Обратите внимание, что в запросе используется ключ раздела, однако вторичные индексы предоставляют другой вариант для запросов. Их гибкость позволяет запрашивать неключевые атрибуты — тема, которая будет обсуждаться позже в этом руководстве.
Метод сканирования также поддерживает операции поиска, собирая все данные таблицы. Необязательное выражение .withFilterExpression предотвращает появление в результатах элементов вне заданных критериев.
Позже в этом уроке мы подробно обсудим сканирование . Теперь взглянем на следующий пример: