docs: def get_list(self, method="list", **kwargs):
          """ returns a key value list of items based on the specfied criteria
  
          """
  
          lg = logging.getLogger("%s.%s" % (self.ln, inspect.stack()[0][3]))
          lg.setLevel(self.log_level)
  
          args = inspect.getargvalues(inspect.currentframe())[3]
          lg.debug("\n****** Args *****:\n%s",
                   pp.pformat(args))
  
          es = kwargs.get("es",self.es)
          doc_type = get2(kwargs, "doc_type", self.doc_type)
          id_field = get2(kwargs, "id_field", "_id")
          value_fld = kwargs.get("value_fld")
          fields = kwargs.get("fields")
          sort_dir = get2(kwargs,"sort_dir", "asc")
          sort_fields = get2(kwargs,"sort_fields", get2(kwargs, "fields", [value_fld]))
          size = get2(kwargs,"size",2000)
          term = get2(kwargs,"term",'').replace("/","//")
          filter_field = kwargs.get('filter_field')
          filter_value = kwargs.get('filter_value')
          dsl = {}
          # set retutn to only return the fields specified or return the whole
          # document if not specified
          if fields is not None:
              dsl["_source"] = fields
          elif value_fld is not None:
              dsl["_source"] = [value_fld]
              fields = [value_fld]
          else:
              fields = []
          # set query parameters based on the return method "list" or "search"
          if sort_dir != "none" and method == "list":
              dsl["sort"] = []
              for fld in sort_fields:
                  if fld is not None:
                      dsl["sort"].append({ fld: sort_dir })
          if method == "search":
              # query in elasticsearch breaks if the is a single open parenthesis
              # remove a single parenthesis from the search term
              if "(" in term and ")" not in term:
                  search_term = term.replace("(", "")
              else:
                  search_term = term
              size = 5
              dsl['query'] =  {
                  "bool": {
                      "should": [
                          {
                              "query_string" : {
                                  "analyze_wildcard": {
                                      "query": "*%s*" % search_term
                                  }
  
                              }
                          },
                          {
                              "query_string" : {
                                  "query": "*%s*" % search_term,
                                  "analyzer": "default",
                                  "analyze_wildcard": True,
                                  "fields": fields,
                                  "boost": 10
                              }
                          }
                      ]
                  }
              }
          else:
              pass
          if filter_value:
              dsl['filter'] = {
                  "term": { filter_field: filter_value }
              }
          lg.info("\n-------- size: %s\ndsl:\n%s", size, json.dumps(dsl,indent=4))
          result = es.search(index=self.es_index,
                             size=size,
                             doc_type=doc_type,
                             body=dsl)
          if kwargs.get("calc"):
              result = self._calc_result(result, kwargs['calc'])
          lg.debug(pp.pformat(result))
          return result