I am querying a geomesa feature which includes join
index on two attributes(r
and di
). Query r=<int-value>
runs and returns data for specified r
value if any. However Query di=<int-value>
doesn't finds any matching records though records for the same exists!
Here is my feature schema:
r:Long:cardinality=high:index=join,*g:Point:srid=4326,di:Integer:index=join,al:Float,s:Float,b:Float,an:Float,he:Float,ve:Float,t:Float,m:Boolean,i:Boolean,ts:Long;geomesa.table.sharing='true',geomesa.indices='attr:4:3,records:2:3,z2:3:3',geomesa.table.sharing.prefix='\\u0001'
I am not able to find out the root cause. Can't i have more than one attribute index in one schema?
UPDATE 1
Attaching Query Plan
[2017-05-01 18:51:53,219] TRACE Explainer: Planning 'aj_dev' di = 1
239099 [Thread-5] TRACE org.locationtech.geomesa.index.utils.Explainer - Planning 'aj_dev' di = 1
[2017-05-01 18:51:53,220] TRACE Explainer: Original filter: di = 1
239100 [Thread-5] TRACE org.locationtech.geomesa.index.utils.Explainer - Original filter: di = 1
[2017-05-01 18:51:53,220] TRACE Explainer: Hints: density[false] bin[false] stats[false] map-aggregate[false] sampling[none]
239100 [Thread-5] TRACE org.locationtech.geomesa.index.utils.Explainer - Hints: density[false] bin[false] stats[false] map-aggregate[false] sampling[none]
[2017-05-01 18:51:53,221] TRACE Explainer: Sort: none
239101 [Thread-5] TRACE org.locationtech.geomesa.index.utils.Explainer - Sort: none
[2017-05-01 18:51:53,221] TRACE Explainer: Transforms: None
239101 [Thread-5] TRACE org.locationtech.geomesa.index.utils.Explainer - Transforms: None
[2017-05-01 18:51:53,221] TRACE Explainer: Strategy selection:
239101 [Thread-5] TRACE org.locationtech.geomesa.index.utils.Explainer - Strategy selection:
[2017-05-01 18:51:53,226] TRACE Explainer: Query processing took 3ms and produced 1 options
239106 [Thread-5] TRACE org.locationtech.geomesa.index.utils.Explainer - Query processing took 3ms and produced 1 options
[2017-05-01 18:51:53,226] TRACE Explainer: Filter plan: FilterPlan[AttributeIndex[di = 1][None]]
239106 [Thread-5] TRACE org.locationtech.geomesa.index.utils.Explainer - Filter plan: FilterPlan[AttributeIndex[di = 1][None]]
[2017-05-01 18:51:53,226] TRACE Explainer: Strategy selection took 0ms for 1 options
239106 [Thread-5] TRACE org.locationtech.geomesa.index.utils.Explainer - Strategy selection took 0ms for 1 options
[2017-05-01 18:51:53,226] TRACE Explainer: Strategy 1 of 1: AttributeIndex
239106 [Thread-5] TRACE org.locationtech.geomesa.index.utils.Explainer - Strategy 1 of 1: AttributeIndex
[2017-05-01 18:51:53,226] TRACE Explainer: Strategy filter: AttributeIndex[di = 1][None]
239106 [Thread-5] TRACE org.locationtech.geomesa.index.utils.Explainer - Strategy filter: AttributeIndex[di = 1][None]
[2017-05-01 18:51:53,227] TRACE Explainer: Plan: org.locationtech.geomesa.accumulo.index.EmptyPlan
239107 [Thread-5] TRACE org.locationtech.geomesa.index.utils.Explainer - Plan: org.locationtech.geomesa.accumulo.index.EmptyPlan
[2017-05-01 18:51:53,227] TRACE Explainer: Table:
239107 [Thread-5] TRACE org.locationtech.geomesa.index.utils.Explainer - Table:
[2017-05-01 18:51:53,227] TRACE Explainer: Deduplicate: false
239107 [Thread-5] TRACE org.locationtech.geomesa.index.utils.Explainer - Deduplicate: false
[2017-05-01 18:51:53,227] TRACE Explainer: Column Families: all
239107 [Thread-5] TRACE org.locationtech.geomesa.index.utils.Explainer - Column Families: all
[2017-05-01 18:51:53,228] TRACE Explainer: Ranges (0):
239108 [Thread-5] TRACE org.locationtech.geomesa.index.utils.Explainer - Ranges (0):
[2017-05-01 18:51:53,228] TRACE Explainer: Iterators (0):
239108 [Thread-5] TRACE org.locationtech.geomesa.index.utils.Explainer - Iterators (0):
[2017-05-01 18:51:53,228] TRACE Explainer: Plan creation took 1ms
239108 [Thread-5] TRACE org.locationtech.geomesa.index.utils.Explainer - Plan creation took 1ms
[2017-05-01 18:51:53,228] TRACE Explainer: Query planning took 17ms
239108 [Thread-5] TRACE org.locationtech.geomesa.index.utils.Explainer - Query planning took 17ms
I solved this by adding missing transformers in maven shade plugin to pick various runtime implementation like below
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<!-- <minimizeJar>true</minimizeJar> -->
<createDependencyReducedPom>false</createDependencyReducedPom>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
</transformers>
</configuration>
</execution>
</executions>
</plugin>