我正在使用Geomesa 1.1与Java连接到Accumulo 1.6.2。查询数据库中的特定属性(特定列值)没有问题。但是,当我尝试运行范围查询(尝试时间和几何范围)时,我收到错误。
当我检查Accumulo日志时,我看到了这个错误:
exception while doing multi-scan
java.lang.ArrayIndexOutOfBoundsException: -1
但我的代码都没有使用数组。从底层库抛出异常。
这就是我构建CQL
过滤器的方式:
Filter cqlFilter = CQL.toFilter("BBOX(where, 160.0, 1.0, 170.0, 3.0)");
可能导致java.lang.ArrayIndexOutOfBoundsException: -1
?
修改
更新了问题和答案,明确表示不重复,并为将来的访问者提供更多一般性帮助。
答案 0 :(得分:0)
快速说明,您可能正在使用GeoMesa Accumulo QuickStart。那里的几何字段名为“Where”。如果您将过滤器更新为
Filter cqlFilter = CQL.toFilter("BBOX(Where, 160.0, 1.0, 170.0, 3.0)");
它可能适合你。
答案 1 :(得分:-1)
如果您将无效/不正确的表格名称传递给toFilter
,Geomesa / Accumulo会误导此红色鲱鱼错误。在您花费大量时间阅读general solutions to this problem之前并在代码中搜索错误,请确保您拥有正确的表名。