We're using GeoMesa on AWS EMR HBASE. We have data with indices on entity_id+dtg, and dtg as well as Z3 and fid. Our Geoserver layer is a merged data store view of two partitioned data stores. One of the partitioned stores holds recent history and is partitioned by day, and the other holds the long term history and is partitioned by month. The merged data store view adds a pair of filters to the two stores to give only the date in the last 24 hours in one and only older than 24 hours in the other. When I draw a random entity_id, and query the GeoServer for all time: curl -s $ {HISTORICAL_GEOSERVER} /geoserver/$ {WORKSPACE} /ows \ --data-urlencode "service=WFS" \ --data-urlencode "version=1.0.0" \ --data-urlencode "request=GetFeature" \ --data-urlencode "typeName=$ {HISTORICAL_LAYER} " \ --data-urlencode "outputFormat=json" \ --data-urlencode "propertyName=dtg" \ --data-urlencode "cql_filter=$ {ID_FIELD} = ${ID_VAL}" a small shell pipeline gives me the months: 2018-11 2018-12 2019-01 2019-02 2019-03 2019-04 2019-05 2019-06 Yet I can set START_DATE=2018-01-01 and END_DATE=2018-02-01 and change the filter to --data-urlencode "cql_filter=${ID_FIELD} = $ {ID_VAL} and $ {START_DATE} T00:00:00Z < dtg and dtg < $ {END_DATE} T00:00:00Z" over a hundred observations in 2018-01. The plan for the month by month merged data store for the entity id only query looks like: 10 Jun 13:09:25 TRACE utils.Explainer - Plan: ScanPlan 10 Jun 13:09:25 TRACE utils.Explainer - Tables: monthly_attr_entityId_dtg_v8_00590, monthly_attr_entityId_dtg_v8_00593, monthly_attr_entityId_dtg_v8_00587, monthly_attr_entityId_dtg_v8_00589, monthly_attr_entityId_dtg_v8_00592, monthly_attr_entityId_dtg_v8_00591, monthly_attr_entityId_dtg_v8_00588 10 Jun 13:09:25 TRACE utils.Explainer - Ranges (4): [%00;800000001066c6b8%00;%00;%00;%00;%00;%00;%00;%00;%01;::%00;800000001066c6b8%00;%80;%00;%01;k<[%9d;%03;], [%01;800000001066c6b8%00;%00;%00;%00;%00;%00;%00;%00;%01;::%01;800000001066c6b8%00;%80;%00;%01;k<[%9d;%03;], [%02;800000001066c6b8%00;%00;%00;%00;%00;%00;%00;%00;%01;::%02;800000001066c6b8%00;%80;%00;%01;k<[%9d;%03;], [%03;800000001066c6b8%00;%00;%00;%00;%00;%00;%00;%00;%01;::%03;800000001066c6b8%00;%80;%00;%01;k<[%9d;%03;] 10 Jun 13:09:25 TRACE utils.Explainer - Scans (4): [%00;800000001066c6b8%00;%00;%00;%00;%00;%00;%00;%00;%01;::%00;800000001066c6b8%00;%80;%00;%01;k<[%9d;%03;], [%02;800000001066c6b8%00;%00;%00;%00;%00;%00;%00;%00;%01;::%02;800000001066c6b8%00;%80;%00;%01;k<[%9d;%03;], [%03;800000001066c6b8%00;%00;%00;%00;%00;%00;%00;%00;%01;::%03;800000001066c6b8%00;%80;%00;%01;k<[%9d;%03;], [%01;800000001066c6b8%00;%00;%00;%00;%00;%00;%00;%00;%01;::%01;800000001066c6b8%00;%80;%00;%01;k<[%9d;%03;] 10 Jun 13:09:25 TRACE utils.Explainer - Column families: d while the plan for the query with an aditional date range looks like: 10 Jun 13:48:53 TRACE utils.Explainer - Plan: ScanPlan 10 Jun 13:48:53 TRACE utils.Explainer - Tables: monthly_attr_entityId_dtg_v8_00576, monthly_attr_entityId_dtg_v8_00577 10 Jun 13:48:53 TRACE utils.Explainer - Ranges (4): [%00;800000001066c6b8%00;%80;%00;%01;`%af;%04;%90;%01;::%00;800000001066c6b8%00;%80;%00;%01;aN%a9;%b4;%00;], [%01;800000001066c6b8%00;%80;%00;%01;`%af;%04;%90;%01;::%01;800000001066c6b8%00;%80;%00;%01;aN%a9;%b4;%00;], [%02;800000001066c6b8%00;%80;%00;%01;`%af;%04;%90;%01;::%02;800000001066c6b8%00;%80;%00;%01;aN%a9;%b4;%00;], [%03;800000001066c6b8%00;%80;%00;%01;`%af;%04;%90;%01;::%03;800000001066c6b8%00;%80;%00;%01;aN%a9;%b4;%00;] 10 Jun 13:48:53 TRACE utils.Explainer - Scans (4): [%00;800000001066c6b8%00;%80;%00;%01;`%af;%04;%90;%01;::%00;800000001066c6b8%00;%80;%00;%01;aN%a9;%b4;%00;], [%01;800000001066c6b8%00;%80;%00;%01;`%af;%04;%90;%01;::%01;800000001066c6b8%00;%80;%00;%01;aN%a9;%b4;%00;], [%03;800000001066c6b8%00;%80;%00;%01;`%af;%04;%90;%01;::%03;800000001066c6b8%00;%80;%00;%01;aN%a9;%b4;%00;], [%02;800000001066c6b8%00;%80;%00;%01;`%af;%04;%90;%01;::%02;800000001066c6b8%00;%80;%00;%01;aN%a9;%b4;%00;] 10 Jun 13:48:53 TRACE utils.Explainer - Column families: d |