code: def _generate_range_queries(self, fieldnames, operator_value_pairs):
          
          if ElasticSearchVisitor.KEYWORD_TO_ES_FIELDNAME['date'] == fieldnames:
              range_queries = []
              for fieldname in fieldnames:
                  updated_operator_value_pairs = \
                      update_date_value_in_operator_value_pairs_for_fieldname(fieldname, operator_value_pairs)
  
                  if not updated_operator_value_pairs:
                      break  # Malformed date
                  else:
                      range_query = {
                          'range': {
                              fieldname: updated_operator_value_pairs
                          }
                      }
  
                      range_queries.append(
                          generate_nested_query(ElasticSearchVisitor.DATE_NESTED_QUERY_PATH, range_query)
                          if fieldname in ElasticSearchVisitor.DATE_NESTED_FIELDS
                          else range_query
                      )
          else:
              range_queries = [{
                      'range': {
                          fieldname: operator_value_pairs
                      }
                  }
                  for fieldname in fieldnames
              ]
  
          return wrap_queries_in_bool_clauses_if_more_than_one(range_queries, use_must_clause=False)
docs: Generates ElasticSearch range queries.
  
          Args:
              fieldnames (list): The fieldnames on which the search is the range query is targeted on,
              operator_value_pairs (dict): Contains (range_operator, value) pairs.
                  The range_operator should be one of those supported by ElasticSearch (e.g. 'gt', 'lt', 'ge', 'le').
                  The value should be of type int or string.
  
          Notes:
              A bool should query with multiple range sub-queries is generated so that even if one of the multiple fields
              is missing from a document, ElasticSearch will be able to match some records.
  
              In the case of a 'date' keyword query, it updates date values after normalizing them by using
              :meth:`inspire_query_parser.utils.visitor_utils.update_date_value_in_operator_value_pairs_for_fieldname`.
              Additionally, in the aforementioned case, if a malformed date has been given, then the the method will
              return an empty dictionary.