code: def search(self, query, **kwargs):
          
          response = self._new_response()
          if self._check_supported_op('search', response):
              if '=' not in query:
                  response.status = 'error'
                  response.error_type = 'InvalidQuery'
                  msg = 'Only the = operation is supported'
                  response.error_message = msg
              else:
                  key, value = query.split('=')
                  if key not in self._indexes:
                      response.status = 'error'
                      response.error_type = 'InvalidQuery'
                      msg = 'Attribute {} is not indexed'.format(key)
                      response.error_message = msg
                  else:
                      params = {'KeyConditionExpression': Key(key).eq(value)}
                      index_name = self._indexes[key]
                      if index_name:
                          params['IndexName'] = index_name
                      pe = kwargs.get('projection_expression')
                      if pe:
                          params['ProjectionExpression'] = pe
                      self._call_ddb_method(self.table.query,
                                            params, response)
                      if response.status == 'success':
                          response.data = self._replace_decimals(
                              response.raw_response['Items'])
          response.prepare()
          return response
docs: Cruddy provides a limited but useful interface to search GSI indexes in
          DynamoDB with the following limitations (hopefully some of these will
          be expanded or eliminated in the future.
  
          * The GSI must be configured with a only HASH and not a RANGE.
          * The only operation supported in the query is equality
  
          To use the ``search`` operation you must pass in a query string of this
          form:
  
              <attribute_name>=<value>
  
          As stated above, the only operation currently supported is equality (=)
          but other operations will be added over time.  Also, the
          ``attribute_name`` must be an attribute which is configured as the
          ``HASH`` of a GSI in the DynamoDB table.  If all of the above
          conditions are met, the ``query`` operation will return a list
          (possibly empty) of all items matching the query and the ``status`` of
          the response will be ``success``.  Otherwise, the ``status`` will be
          ``error`` and the ``error_type`` and ``error_message`` will provide
          further information about the error.