2016-05-16 9 views
1

私の質問を読んでいただきありがとうございます。Dynamodbは2つのGSIでクエリを実行できますか?

私のシナリオはこれです。私はdynamodbにgeopointsテーブルを持っています。

それから成る:
OBJECT_TYPE(文字列ハッシュ)
ID(文字列RANGE)
LAT(数GSI RANGE)
LNG(数GSI RANGE)

それのインデックスがあります
OBJECT_TYPEを-latインデックス(OBJECT_TYPE-ハッシュLAT-範囲)
OBJECT_TYPE-LNG-指数(OBJECT_TYPE-ハッシュLNG-範囲)私が何をしたいのか


IndexName: "object_type-lat-index", KeyConditionExpression: "object_type=:otype AND (lat BETWEEN :llat AND :glat) AND (lng BETWEEN :llng AND :glng)", 私はDynamoDBのドキュメントでそれを見つけることができないよう、少なくとも緯度と大きい緯度のビトウィーンズを取得することにより、緯度とLNGを照会できるようにしたい、と少なくともLNGと大きいLNG

。これはできますか、それとも正しく実装できますか?エラーのようなものを返すされているため「だけ持つことができます1つのまたは2の条件」

答えて

2

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html#GSI.Querying

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html

それが動作する方法は、クエリが(キーが表に定義された)テーブル自体に対して機能していますまたはGSI。複数のGSIとテーブルHKを同じクエリで組み合わせることはできません。ここ

2オプション:
1)2つのインデックスに対して2つのクエリを実行し、クライアント
2に結果を交差する)他の表現で動作するフィルタ式/ wの指標の一つに対して1つの1クエリを実行(基本的に、例えば、longのフィルタを使ったlatのクエリ)。

+0

ありがとうございます!私はオプション2を実行しています – taptipblard

+0

意図したとおりに読み取りスループットのサイズを減らしますか?私が尋ねようとしているのは、フィルタを適用した後、またはフィルタを適用する前に、結果のサイズ(RTUの消費量)が結果になるということです。 – Sudip

関連する問題