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

旧答案: 目前您只能对二级索引执行单个谓词,等于或介于。

更新:在 3.12 版本中添加了谓词过滤。您可以使用 Java 客户端的 PredExp类(参见示例)。

于 2014-12-05T19:14:11.993 回答