

@classmethod
def get_mapping(cls):
    doc_name = cls.get_doctype_name()
    appver = {
        'dynamic': False,
        'properties': {
            'max': {
                'type': 'long',
            },
            'min': {
                'type': 'long',
            },
        },
    }
    mapping = {
        doc_name: {
            'dynamic': False,
            'properties': {
                'id': {
                    'type': 'long',
                },
                'app': {
                    'type': 'long',
                },
                'appversion': {
                    'properties': {app.id: appver for app in amo.APP_USAGE},
                },
                'authors': {
                    'type': 'string',
                },
                'average_daily_users': {
                    'type': 'long',
                },
                'bayesian_rating': {
                    'type': 'double',
                },
                'category': {
                    'type': 'integer',
                },
                'created': {
                    'type': 'date',
                },
                'current_version': {
                    'type': 'object',
                    'dynamic': False,
                    'properties': {
                        'id': {
                            'type': 'long',
                            'index': 'no',
                        },
                        'reviewed': {
                            'type': 'date',
                            'index': 'no',
                        },
                        'files': {
                            'type': 'object',
                            'dynamic': False,
                            'properties': {
                                'id': {
                                    'type': 'long',
                                    'index': 'no',
                                },
                                'created': {
                                    'type': 'date',
                                    'index': 'no',
                                },
                                'hash': {
                                    'type': 'string',
                                    'index': 'no',
                                },
                                'filename': {
                                    'type': 'string',
                                    'index': 'no',
                                },
                                'platform': {
                                    'type': 'byte',
                                    'index': 'no',
                                },
                                'size': {
                                    'type': 'long',
                                    'index': 'no',
                                },
                                'status': {
                                    'type': 'byte',
                                },
                            },
                        },
                        'version': {
                            'type': 'string',
                            'index': 'no',
                        },
                    },
                },
                'boost': {
                    'type': 'float',
                    'null_value': 1.0,
                },
                'default_locale': {
                    'type': 'string',
                    'index': 'no',
                },
                'description': {
                    'type': 'string',
                    'analyzer': 'snowball',
                },
                'guid': {
                    'type': 'string',
                    'index': 'no',
                },
                'has_version': {
                    'type': 'boolean',
                },
                'has_theme_rereview': {
                    'type': 'boolean',
                },
                'hotness': {
                    'type': 'double',
                },
                'is_disabled': {
                    'type': 'boolean',
                },
                'is_listed': {
                    'type': 'boolean',
                },
                'last_updated': {
                    'type': 'date',
                },
                'name': {
                    'type': 'string',
                    'analyzer': 'standardPlusWordDelimiter',
                },
                'name_sort': {
                    'type': 'string',
                    'index': 'not_analyzed',
                },
                'platforms': {
                    'type': 'byte',
                    'index_name': 'platform',
                },
                'public_stats': {
                    'type': 'boolean',
                },
                'slug': {
                    'type': 'string',
                },
                'status': {
                    'type': 'byte',
                },
                'summary': {
                    'type': 'string',
                    'analyzer': 'snowball',
                },
                'tags': {
                    'type': 'string',
                    'index': 'not_analyzed',
                    'index_name': 'tag',
                },
                'type': {
                    'type': 'byte',
                },
                'weekly_downloads': {
                    'type': 'long',
                },
            },
        },
    }
    cls.attach_translation_mappings(mapping, ('description', 'homepage', 'name', 'summary', 'support_email', 'support_url'))
    cls.attach_language_specific_analyzers(mapping, ('name', 'description', 'summary'))
    return mapping

dataset/ETHPy150Open mozilla/addons-server/src/olympia/addons/indexers.py AddonIndexer.get_mapping/original