docs: def search(self, dsl, params):
          """
          Free queries to ES index.
  
          dsl (string): with DSL query
          params (list): [(key, value), (key, value)]
              where key is a query parameter, and value is the value required for parameter, ex: [('size', '0'), ('search_type', 'count')]
          """
  
          query_parameters = []
          for key, value in params:
              query_parameters.append(self.CITEDBY_THRIFT.kwargs(str(key), str(value)))
  
          try:
              result = self.client.search(dsl, query_parameters)
          except self.CITEDBY_THRIFT.ServerError:
              raise ServerError('you may trying to run a bad DSL Query')
  
          try:
              return json.loads(result)
          except:
              return None