returns a single item data record/document based on specified
        criteria

        args:
            item_id: the id value of the desired item. Can be used in
                     combination with the id_field for a paired lookup.
            id_field: the field that is related to the item_id; default = '_id'
                      **Example**: selecting a country using a different
                      itendifier than the record id. The United States's '_id'
                      value is 'US' however the record can be found by
                      specifying item_id='USA', id_field='ISO 3166-1 A3'
        kwargs:
            used to overided any of the initialization values for the class

def get_doc(self, item_id, id_field="_id", **kwargs):
        """ returns a single item data record/document based on specified
        criteria

        args:
            item_id: the id value of the desired item. Can be used in
                     combination with the id_field for a paired lookup.
            id_field: the field that is related to the item_id; default = '_id'
                      **Example**: selecting a country using a different
                      itendifier than the record id. The United States's '_id'
                      value is 'US' however the record can be found by
                      specifying item_id='USA', id_field='ISO 3166-1 A3'
        kwargs:
            used to overided any of the initialization values for the class
        """

        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 = kwargs.get("doc_type", self.doc_type)
        if id_field == "_id":
            lg.debug("*** _id lookup: index: %s item_id: %s",
                     self.es_index,
                     item_id)
            result = es.get(index=self.es_index,
                            id=item_id)
        else:
            dsl = {
                "query": {
                    "constant_score": {
                        "filter": {
                            "term": { id_field: item_id }
                        }
                    }
                }
            }
            lg.debug("*** id_field lookup: index: %s item_id: %s \nDSL: %s",
                     self.es_index,
                     item_id,
                     pp.pformat(dsl))
            result = es.search(index=self.es_index,
                               doc_type=doc_type,
                               body=dsl)
            result = first(result.get("hits",{}).get("hits",[]))
        lg.debug("\tresult:\n%s", pp.pformat(result))
        self.item_data = result
        self.form_data = MultiDict(result)
        return result