"""Establishment app documents.""" from django.conf import settings from django_elasticsearch_dsl import Document, Index, fields from search_indexes.utils import OBJECT_FIELD_PROPERTIES from establishment import models EstablishmentIndex = Index(settings.ELASTICSEARCH_INDEX_NAMES.get(__name__, 'establishment')) EstablishmentIndex.settings(number_of_shards=1, number_of_replicas=1) @EstablishmentIndex.doc_type class EstablishmentDocument(Document): """Establishment document.""" description = fields.ObjectField(attr='description_indexing', properties=OBJECT_FIELD_PROPERTIES) tags = fields.ObjectField( properties={ 'id': fields.IntegerField(attr='id'), 'label': fields.ObjectField(attr='label') }, multi=True) address = fields.ObjectField( properties={ 'id': fields.IntegerField(), 'street_name_1': fields.TextField( fields={'raw': fields.KeywordField()} ), 'street_name_2': fields.TextField( fields={'raw': fields.KeywordField()} ), 'number': fields.IntegerField(), 'location': fields.GeoPointField(attr='location_field_indexing'), 'city': fields.ObjectField( properties={ 'id': fields.IntegerField(), 'name': fields.KeywordField(), 'is_island': fields.BooleanField(), 'country': fields.ObjectField( properties={ 'id': fields.IntegerField(), 'name': fields.ObjectField(attr='name_indexing', properties=OBJECT_FIELD_PROPERTIES), 'code': fields.KeywordField(), } ), } ), } ) class Django: model = models.Establishment fields = ( 'id', 'name', 'toque_number', 'price_level', ) def prepare_tags(self, instance): return instance.tags_indexing