public Status scan()

in elasticsearch5/src/main/java/site/ycsb/db/elasticsearch5/ElasticsearchRestClient.java [346:396]


  public Status scan(
      final String table,
      final String startkey,
      final int recordcount,
      final Set<String> fields,
      final Vector<HashMap<String, ByteIterator>> result) {
    try {
      final Response response;
      try (XContentBuilder builder = jsonBuilder()) {
        builder.startObject();
        builder.startObject("query");
        builder.startObject("range");
        builder.startObject(KEY);
        builder.field("gte", startkey);
        builder.endObject();
        builder.endObject();
        builder.endObject();
        builder.field("size", recordcount);
        builder.endObject();
        response = search(table, builder);
        @SuppressWarnings("unchecked") final Map<String, Object> map = map(response);
        @SuppressWarnings("unchecked") final Map<String, Object> hits = (Map<String, Object>)map.get("hits");
        @SuppressWarnings("unchecked") final List<Map<String, Object>> list =
                (List<Map<String, Object>>) hits.get("hits");

        for (final Map<String, Object> hit : list) {
          @SuppressWarnings("unchecked") final Map<String, Object> source = (Map<String, Object>)hit.get("_source");
          final HashMap<String, ByteIterator> entry;
          if (fields != null) {
            entry = new HashMap<>(fields.size());
            for (final String field : fields) {
              entry.put(field, new StringByteIterator((String) source.get(field)));
            }
          } else {
            entry = new HashMap<>(hit.size());
            for (final Map.Entry<String, Object> field : source.entrySet()) {
              if (KEY.equals(field.getKey())) {
                continue;
              }
              entry.put(field.getKey(), new StringByteIterator((String) field.getValue()));
            }
          }
          result.add(entry);
        }
      }
      return Status.OK;
    } catch (final Exception e) {
      e.printStackTrace();
      return Status.ERROR;
    }
  }