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();
                              }
                          }
                      }