docs: def get_index(self, bucket, index, startkey, endkey=None,
                    return_terms=None, max_results=None, continuation=None,
                    timeout=None, term_regex=None):
          """
          Performs a secondary index query.
          """
          if term_regex and not self.index_term_regex():
              raise NotImplementedError("Secondary index term_regex is not "
                                        "supported on %s" %
                                        self.server_version.vstring)
  
          if timeout == 'infinity':
              timeout = 0
  
          params = {'return_terms': return_terms, 'max_results': max_results,
                    'continuation': continuation, 'timeout': timeout,
                    'term_regex': term_regex}
          bucket_type = self._get_bucket_type(bucket.bucket_type)
          url = self.index_path(bucket.name, index, startkey, endkey,
                                bucket_type=bucket_type, **params)
          status, headers, body = self._request('GET', url)
          self.check_http_code(status, [200])
          json_data = json.loads(bytes_to_str(body))
          if return_terms and u'results' in json_data:
              results = []
              for result in json_data[u'results'][:]:
                  term, key = list(result.items())[0]
                  results.append((decode_index_value(index, term), key),)
          else:
              results = json_data[u'keys'][:]
  
          if max_results and u'continuation' in json_data:
              return (results, json_data[u'continuation'])
          else:
              return (results, None)