docs: public Optional<IndexFieldTypesDTO> pollIndex(final String indexName, final String indexSetId) {
          final GetMapping getMapping = new GetMapping.Builder()
                  .addIndex(indexName)
                  .build();
  
          final JestResult result;
          try (final Timer.Context ignored = pollTimer.time()) {
              result = JestUtils.execute(jestClient, getMapping, () -> "Unable to get index mapping for index: " + indexName);
          } catch (Exception e) {
              if (LOG.isDebugEnabled()) {
                  LOG.error("Couldn't get mapping for index <{}>", indexName, e);
              } else {
                  LOG.error("Couldn't get mapping for index <{}>: {}", indexName, ExceptionUtils.getRootCauseMessage(e));
              }
              return Optional.empty();
          }
  
          final JsonNode properties = result.getJsonObject()
                  .path(indexName)
                  .path("mappings")
                  .path("message") // TODO: Hardcoded index type name
                  .path("properties");
  
          if (properties.isMissingNode()) {
              LOG.error("Invalid mapping response: {}", result.getJsonString());
              return Optional.empty();
          }
  
          final Spliterator<Map.Entry<String, JsonNode>> fieldSpliterator = Spliterators.spliteratorUnknownSize(properties.fields(), Spliterator.IMMUTABLE);
  
          final Set<FieldTypeDTO> fieldsMap = StreamSupport.stream(fieldSpliterator, false)
                  .map(field -> Maps.immutableEntry(field.getKey(), field.getValue().path("type").asText()))
                  // The "type" value is empty if we deal with a nested data type
                  // TODO: Figure out how to handle nested fields, for now we only support the top-level fields
                  .filter(field -> !field.getValue().isEmpty())
                  .map(field -> FieldTypeDTO.create(field.getKey(), field.getValue()))
                  .collect(Collectors.toSet());
  
          return Optional.of(IndexFieldTypesDTO.create(indexSetId, indexName, fieldsMap));
      }