我使用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
?
编辑
更新了问答,以明确它不是重复的,并为未来的访问者提供更全面的帮助。
快速提示,您可能正在使用GeoMesa Accumulo QuickStart。那里的几何体字段名为"Where"。如果您将过滤器更新为
Filter cqlFilter = CQL.toFilter("BBOX(Where, 160.0, 1.0, 170.0, 3.0)");
它可能对你有用。
Geomesa/Accumulo如果将无效/不正确的表名传递给toFilter
,将错误地抛出此转移注意力的错误在花大量时间阅读这个问题的一般解决方案并在代码中搜索错误之前,请确保您有正确的表名。