Hi,
                       I  imported the geoserver's data nyc:tiger_roads
                    and nyc:landmarks into geomesa,  visualized those
                    layer.   and then the layer were
                    opened in openlayers, when i drag the
                    layer to see different part, i found some feature
                    dispeared, as the following picture:
                      
                
                       While i wrote a Test code, according to the
                  quickstart example , to read from the Positon
                  layer(201600 features) in same query condition, and
                  executed it every 5 seconds to continue query,
                  unfortunately i got different results size, may be
                  20160, mat be 19592 or 18218 or others
 . key
                  codes as the following:
                        
                 static Filter createFilter(String geomField, double x0,
                double y0,
                            double x1, double y1, String dateField,
                String t0, String t1,
                            String attributesQuery) throws CQLException,
                IOException {
                
                        // there are many different geometric predicates
                that might be used;
                        // here, we just use a bounding-box (BBOX)
                predicate as an example.
                        // this is useful for a rectangular query area
                        String cqlGeometry = "BBOX(" + geomField + ", "
                + x0 + ", " + y0 + ", "
                                + x1 + ", " + y1 + ")";
                
                        // there are also quite a few temporal
                predicates; here, we use a
                        // "DURING" predicate, because we have a fixed
                range of times that
                        // we want to query
                        String cqlDates = "(" + dateField + " DURING " +
                t0 + "/" + t1 + ")";
                
                        // there are quite a few predicates that can
                operate on other attribute
                        // types; the GeoTools Filter constant "INCLUDE"
                is a default that means
                        // to accept everything
                        String cqlAttributes = attributesQuery == null ?
                "INCLUDE"
                                : attributesQuery;
                
                        String cql = /*cqlGeometry + " AND " +
                */cqlAttributes + " AND " + cqlDates;
                        return CQL.toFilter(cql);
                    }
                static int queryFeatures(String simpleFeatureTypeName,
                            DataStore dataStore, String geomField,
                double x0, double y0,
                            double x1, double y1, String dateField,
                String t0, String t1,
                            String attributesQuery) throws CQLException,
                IOException {
                
                        // construct a (E)CQL filter from the search
                parameters,
                        // and use that as the basis for the query
                        Filter cqlFilter = createFilter(geomField, x0,
                y0, x1, y1, dateField,
                                t0, t1, attributesQuery);
                        Query query = new Query(simpleFeatureTypeName,
                cqlFilter);
                
                        // submit the query, and get back an iterator
                over matching features
                        FeatureSource featureSource = 
                dataStore.getFeatureSource(simpleFeatureTypeName);
                        FeatureIterator featureItr = 
                featureSource.getFeatures(query).features();
                
                //        AccumuloFeatureReader reader =
                ((AccumuloDataStore) dataStore)
                //               
                .getFeatureReader(simpleFeatureTypeName, query);
                ////
                //       
                reader.explainQuery(reader.explainQuery$default$1(),
                //                reader.explainQuery$default$2());
                
                        // loop through all results
                        int n = 0;
                        while (featureItr.hasNext()) {
                            Feature feature = featureItr.next();
                //            System.out.println((++n) + ".  "
                //                    +
                feature.getProperty("simNumber").getValue() + "|"
                //                    +
                feature.getProperty("geom").getValue() + "|"
                //                    +
                feature.getProperty("timeStamp").getValue());
                            ++n;
                        }
                        featureItr.close();
                        
                        return n/*featureSource.getCount(query)*/;
                    }
                
                public static void main(String[] args) throws Exception
                {
                        // find out where -- in Accumulo -- the user
                wants to store data
                        CommandLineParser parser = new BasicParser();
                        Options options = getCommonRequiredOptions();
                        CommandLine cmd = parser.parse(options, args);
                
                        // verify that we can see this Accumulo
                destination in a GeoTools manner
                        Map<String, String> dsConf =
                getAccumuloDataStoreConf(cmd);
                        DataStore dataStore =
                DataStoreFinder.getDataStore(dsConf);
                        assert dataStore != null;
                
                        // establish specifics concerning the
                SimpleFeatureType to store
                        String simpleFeatureTypeName = "Position";
                
                        // query a few Features from this table
                        List<Runnable> tasks = new
                ArrayList<Runnable>();
                        int clients = 1;
                        
                        for(int i=0; i<clients; i++){
                           tasks.add(new
                GeomesaQueryTask(simpleFeatureTypeName, dataStore));
                        }
                        
                        ScheduledThreadPoolExecutor exec = new 
                ScheduledThreadPoolExecutor(clients); 
                        for(Runnable run : tasks){
                           exec.scheduleAtFixedRate(run, 0 ,  5000 ,
                TimeUnit.MILLISECONDS); 
                        }
                        
                    }
                 
                    static Random random = new Random(10);
                    
                    static String[] sims = new String[]{"013519171000",
                "013519171001", "013519171002", "013519171003",
                "013519171004", "013519171005", "013519171006",
                "013519171007", "013519171008", "013519171009"};
                
                    private static class GeomesaQueryTask implements
                Runnable {
                        
                        private String featureName;
                        private DataStore dataStore;
                
                        public GeomesaQueryTask(String
                simpleFeatureTypeName, DataStore dataStore) {
                            this.featureName = simpleFeatureTypeName;
                            this.dataStore = dataStore;
                        }
                
                        public void run() {
                            
                            try {
                                double lonStart =73.33;
                                double latStart = 3.51;
                                double lonEnd = 135.05;
                                double latEnd = 53.33; 
                                
                                long start = System.currentTimeMillis();
                                String sim =  sims[random.nextInt(10)];
                
                                int num = queryFeatures(featureName,
                dataStore, "geom", lonStart,latStart,
                                        lonEnd, latEnd, "timeStamp",
                "2015-01-05T00:00:00",
                                        "2015-01-14T23:59:59",
                "(simNumber = '"+sim+"')");
                                
                                long end = System.currentTimeMillis();
                                
                               
                System.out.println(Thread.currentThread().getName()+"
                read "+ num +" entries, consume " + (end -start) +
                "ms");
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                    }