def search(self, dsl, params):
query_parameters = []<EOL>for key, value in params:<EOL><INDENT>query_parameters.append(self.CITEDBY_THRIFT.kwargs(str(key), str(value)))<EOL><DEDENT>try:<EOL><INDENT>result = self.client.search(dsl, query_parameters)<EOL><DEDENT>except self.CITEDBY_THRIFT.ServerError:<EOL><INDENT>raise ServerError('<STR_LIT>')<EOL><DEDENT>try:<EOL><INDENT>return json.loads(result)<EOL><DEDENT>except:<EOL><INDENT>return None<EOL><DEDENT>
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')]