5

bin1bin2にセカンダリ インデックスを作成したとします。そして、 Javaクライアントを次のよう
に使用してクエリを実行します。

Statement stmt = new Statement();
stmt.setNamespace("test");
stmt.setSetName("myDemoSet");
stmt.setBinNames("bin1", "bin2", "bin3", "bin4", "bin5");
stmt.setFilters(Filter.equal("bin1", Value.get("sherlock")));
RecordSet rs = null;
try {
    rs = client.query(null, stmt);
} catch (AerospikeException e) {
    e.printStackTrace();
}

これは機能します。しかし、別のフィルターを追加すると:

stmt.setFilters(Filter.equal("bin1", Value.get("sherlock")), Filter.equal("bin2", Value.get("stackoverflow")));

出力に影響はないようです。
Aerospike Java クライアントは現在、複数のフィルターをサポートしていますか?
もしそうなら、どのように?

4

1 に答える 1

6

古い回答: 現在、セカンダリ インデックスに対して実行できる述語は、equals または between のいずれか 1 つだけです。

更新: リリース 3.12で述語フィルタリングが追加されました。Java クライアントのPredExpクラスを使用でき ます (を参照)。

于 2014-12-05T19:14:11.993 に答える