'Converts this instance into an Elasticsearch document'

@classmethod
def extract_document(cls, pk=None, obj=None):

    if (obj is None):
        obj = cls.get_model().objects.get(pk=pk)
    attach_trans_dict(cls.get_model(), [obj])
    attach_tags([obj])
    attrs = ('created', 'default_locale', 'id', 'icon_hash', 'icon_type', 'is_disabled', 'last_updated', 'mobile_url', 'modified', 'promo_img_hash', 'status', 'tv_featured', 'tv_url', 'url')
    doc = dict(zip(attrs, attrgetter(*attrs)(obj)))
    doc['category'] = (obj.categories or [])
    doc['device'] = (obj.devices or [])
    doc['developer_name'] = (unicode(obj.developer_name) if obj.developer_name else None)
    doc['name_sort'] = unicode(obj.name).lower()
    doc['preferred_regions'] = (obj.preferred_regions or [])
    doc['tags'] = getattr(obj, 'keywords_list', [])
    doc['url_tokenized'] = cls.strip_url(obj.url)
    doc['reviewed'] = obj.last_updated
    doc.update(cls.extract_popularity_trending_boost(obj))
    for field in cls.translated_fields:
        doc.update(cls.extract_field_translations(obj, field, include_field_for_search=True))
    for field in cls.fields_with_language_analyzers:
        doc.update(cls.extract_field_analyzed_translations(obj, field))
    return doc
