假设我在bin1和bin2上创建了二级索引。 我使用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 Client目前支持多个过滤器吗? 如果是这样,怎么样?
旧答案:目前,您只能在辅助索引上执行单个谓词,可以是等于或等于。
更新:在Predicate filtering添加了release 3.12。您可以使用Java客户端的PredExp类(请参阅examples)。