Geomesa HBase中基于JSON属性的远程过滤

Geomesa HBase中基于JSON属性的远程过滤,hbase,illegalargumentexception,geomesa,Hbase,Illegalargumentexception,Geomesa,我正在尝试运行一个查询,该查询基于json属性对启用远程筛选的Geomesa HBase群集进行筛选(HBase.remote.filtering=true)。但是,由于出现错误消息Property'$.featurePayload.properties.user'的IllegalArgumentException,查询失败。有没有办法通过Geomsa和HBase启用基于json属性的远程过滤 注意:当hbase.remote.filtering设置为false时,我能够成功运行此查询,并且在客

我正在尝试运行一个查询,该查询基于json属性对启用远程筛选的Geomesa HBase群集进行筛选(
HBase.remote.filtering=true
)。但是,由于出现错误消息
Property'$.featurePayload.properties.user'的
IllegalArgumentException
,查询失败。有没有办法通过Geomsa和HBase启用基于json属性的远程过滤

注意:当
hbase.remote.filtering
设置为false时,我能够成功运行此查询,并且在客户端完成筛选,应用程序在客户端连接到GeoTools数据存储,以通过查询获取功能。我的主要困惑在于引发异常的远程过滤有什么不同,以及是否需要远程运行json属性过滤

这是我尝试运行的一个示例查询:

\"$.featurePayload.properties.user\" = 'someUser'
这是表架构:

INFO  Describing attributes of feature 'OSMNodes'
geometry           | Point     (Spatio-temporally indexed)
ingestionTimestamp | Timestamp (Spatio-temporally indexed)
nextTimestamp      | Timestamp 
serializerVersion  | String    
featurePayload     | String
表中的示例功能:

id,*geometry:Point:srid=4326,ingestionTimestamp:Timestamp,nextTimestamp:Timestamp,serializerVersion:String,featurePayload:String
1789928211#3165330648,POINT (-0.1844331 27.2077326),2019-12-23T03:00:00.000Z,9999-12-30T23:59:59.000Z,geojson,"{""geometry"":{""type"":""Point"",""coordinates"":[-0.1844331,27.2077326]},""id"":""3165330648"",""properties"":{""tags"":{},""changesetId"":123456,""version"":1,""uid"":1111111,""user"":""someUser"",""featureSource"":""OSM"",""sourceTimestamp"":""2014-11-03 19:40:40"",""ingestionTimestamp"":""2019-12-23 03:00:00""}}"
堆栈跟踪:

1. Caused by: java.lang.IllegalArgumentException: Property '$.featurePayload.properties.user' does not exist in feature type 
2.  at org.locationtech.geomesa.filter.factory.FastFilterFactory$$anonfun$1.apply(FastFilterFactory.scala:263)
3.  at org.locationtech.geomesa.filter.factory.FastFilterFactory$$anonfun$1.apply(FastFilterFactory.scala:263)
4.  at scala.Option.getOrElse(Option.scala:121)
5.  at org.locationtech.geomesa.filter.factory.FastFilterFactory.property(FastFilterFactory.scala:262)
6.  at org.locationtech.geomesa.filter.visitor.QueryPlanFilterVisitor.visit(QueryPlanFilterVisitor.scala:139)
7.  at org.geotools.filter.AttributeExpressionImpl.accept(AttributeExpressionImpl.java:347)
8.  at org.geotools.filter.visitor.DuplicatingFilterVisitor.visit(DuplicatingFilterVisitor.java:118)
9.  at org.locationtech.geomesa.filter.visitor.QueryPlanFilterVisitor.visit(QueryPlanFilterVisitor.scala:318)
10.     at org.locationtech.geomesa.filter.visitor.QueryPlanFilterVisitor.org$locationtech$geomesa$filter$visitor$QueryPlanFilterVisitor$$bind(QueryPlanFilterVisitor.scala:351)
11.     at org.locationtech.geomesa.filter.visitor.QueryPlanFilterVisitor.visit(QueryPlanFilterVisitor.scala:150)
12.     at org.geotools.filter.IsEqualsToImpl.accept(IsEqualsToImpl.java:149)
13.     at org.locationtech.geomesa.filter.visitor.QueryPlanFilterVisitor.visit(QueryPlanFilterVisitor.scala:81)
14.     at org.geotools.filter.AndImpl.accept(AndImpl.java:45)
15.     at org.locationtech.geomesa.filter.factory.FastFilterFactory$.optimize(FastFilterFactory.scala:412)
16.     at org.locationtech.geomesa.filter.factory.FastFilterFactory$.toFilter(FastFilterFactory.scala:401)
17.     at org.locationtech.geomesa.index.iterators.IteratorCache$$anonfun$filter$2.apply(IteratorCache.scala:82)
18.     at org.locationtech.geomesa.index.iterators.IteratorCache$$anonfun$filter$2.apply(IteratorCache.scala:82)
19.     at org.locationtech.geomesa.utils.cache.ThreadLocalCache.getOrElseUpdate(ThreadLocalCache.scala:68)
20.     at org.locationtech.geomesa.index.iterators.IteratorCache$.filter(IteratorCache.scala:82)
21.     at org.locationtech.geomesa.hbase.filters.CqlTransformFilter$.deserialize(CqlTransformFilter.scala:286)
22.     ... 19 more

您能否验证
featurePayload
属性是否为
“json”
->
“true”
设置了用户数据标志?通过hbase外壳扫描目录表,您应该能够看到这一点。您是否可以验证
featurePayload
属性是否为
“json”
->
“true”
设置了用户数据标志?通过在hbase外壳中扫描目录表,您应该能够看到这一点。