docs: def get_fields(self):
          """
          Get the required fields for serializing the result.
          """
  
          fields = self.Meta.fields
          exclude = self.Meta.exclude
          ignore_fields = self.Meta.ignore_fields
          indices = self.Meta.index_classes
  
          declared_fields = copy.deepcopy(self._declared_fields)
          prefix_field_names = len(indices) > 1
          field_mapping = OrderedDict()
  
          # overlapping fields on multiple indices is supported by internally prefixing the field
          # names with the index class to which they belong or, optionally, a user-provided alias
          # for the index.
          for index_cls in self.Meta.index_classes:
              prefix = ""
              if prefix_field_names:
                  prefix = "_%s__" % self._get_index_class_name(index_cls)
              for field_name, field_type in six.iteritems(index_cls.fields):
                  orig_name = field_name
                  field_name = "%s%s" % (prefix, field_name)
  
                  # Don't use this field if it is in `ignore_fields`
                  if orig_name in ignore_fields or field_name in ignore_fields:
                      continue
                  # When fields to include are decided by `exclude`
                  if exclude:
                      if orig_name in exclude or field_name in exclude:
                          continue
                  # When fields to include are decided by `fields`
                  if fields:
                      if orig_name not in fields and field_name not in fields:
                          continue
  
                  # Look up the field attributes on the current index model,
                  # in order to correctly instantiate the serializer field.
                  model = index_cls().get_model()
                  kwargs = self._get_default_field_kwargs(model, field_type)
                  kwargs['prefix_field_names'] = prefix_field_names
                  field_mapping[field_name] = self._field_mapping[field_type](**kwargs)
  
          # Add any explicitly declared fields. They *will* override any index fields
          # in case of naming collision!.
          if declared_fields:
              for field_name in declared_fields:
                  field_mapping[field_name] = declared_fields[field_name]
          return field_mapping