dynobase-icon
Dynobase

Query Local Secondary Index in DynamoDB Using Java (Guide w/ Code Examples)

Rafal Wilinski

Provided by Rafal Wilinski

Last updated: October 23rd, 2026

A local secondary index keeps the table partition key and uses a different sort key. Query it by name; this example assumes StatusIndex was defined when Orders was created.

This example uses Java 17+ and the software.amazon.awssdk:dynamodb SDK 2.x dependency. Configure an AWS Region and credentials through your usual AWS profile or runtime role. The Orders table has String keys pk and sk; adapt the table and keys to your schema.

import java.util.*; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.*; public class Example { static AttributeValue s(String value) { return AttributeValue.builder().s(value).build(); } static Map<String, AttributeValue> key(String order) { return Map.of("pk", s("CUSTOMER#123"), "sk", s(order)); } public static void main(String[] args) throws InterruptedException { try (DynamoDbClient ddb = DynamoDbClient.create()) { QueryRequest request = QueryRequest.builder().tableName("Orders") .indexName("StatusIndex") .keyConditionExpression("#pk = :pk") .expressionAttributeNames(Map.of("#pk", "pk")) .expressionAttributeValues(Map.of(":pk", s("CUSTOMER#123"))).build(); for (QueryResponse page : ddb.queryPaginator(request)) { page.items().forEach(System.out::println); } } } }

Local secondary indexes support strongly consistent reads when ConsistentRead is true. They cannot be added to an existing table.

Reference: AWS Query API. For related access patterns, see DynamoDB query examples.

Dynobase is a Professional GUI Client for DynamoDB

Start your 7-day free trial today

Product Features

Download
/
Pricing
/
Member Portal
/
Privacy
/
EULA
/
Twitter
© 2026 Dynobase
+
Still using AWS DynamoDB Console?
Try Dynobase to accelerate your DynamoDB workflow. Start your 7-day free trial today.