docs: def put_mapping(self, app, index=None):
          """Put mapping for elasticsearch for current schema.
  
          It's not called automatically now, but rather left for user to call it whenever it makes sense.
          """
          for resource, resource_config in self._get_elastic_resources().items():
              datasource = resource_config.get('datasource', {})
  
              if not is_elastic(datasource):
                  continue
  
              if datasource.get('source', resource) != resource:  # only put mapping for core types
                  continue
  
              properties = self._get_mapping_properties(resource_config)
  
              kwargs = {
                  'index': index or self._resource_index(resource),
                  'doc_type': resource,
                  'body': properties,
              }
  
              try:
                  self.elastic(resource).indices.put_mapping(**kwargs)
              except elasticsearch.exceptions.RequestError:
                  logger.exception('mapping error, updating settings resource=%s' % resource)