Обновление эластичного поискового индекса - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь обновить свой индексasticsearch с любыми изменениями в существующей базе данных.т. е. мой индекс упругого поиска должен быть синхронизирован с базой данных, мой пример model.py выглядит следующим образом

# models.py

class Car(models.Model):
    name = models.CharField()
    color = models.CharField()
    manufacturer = models.ForeignKey('Manufacturer')
    cartype =models.ForeignKey('Cartype')

class Cartype(models.Model):
    type = models.CharField()
    model = models.CharField()


class Manufacturer(models.Model):
    name = models.CharField()
    country_code = models.CharField(max_length=2)
    location = models.ForeignKey('Location')


class Location(models.Model):
    country = models.CharField()

class Ad(models.Model):
    title = models.CharField()
    description = models.TextField()
    created = models.DateField(auto_now_add=True)
    modified = models.DateField(auto_now=True)
    url = models.TextField()
    car = models.ForeignKey('Car', related_name='ads')

from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search

client = Elasticsearch()

my_search = Search(using=client)




cjsta = Index(settings.ELASTICSEARCH_INDEX_NAMES[__name__])

# See Elasticsearch Indices API reference for available settings
cjsta.settings(
    number_of_shards=1,
    number_of_replicas=1
)

logger = logging.getLogger(__name__)


@cjsta.doc_type
class CarStageDocument(DocType):

    car = fields.ObjectField(properties={
        'name':fields.StringField(),
        'color': fields.StringField(),
        'manufacturer':fields.ObjectField(properties={
             'name': fields.IntegerField(),
             'country_code': fields.StringField(),
             'location': fields.ObjectField(properties={
                      'country':fields.StringField(),
           })
}),
        'cartype': fields.ObjectField(properties={
            'type': fields.StringField(),
            'model': fields.StringField(),
        }),


    })

    class Meta:
        model = Ad
        related_models = [Car,Cartype,Manufacturer,Location]
        fields =  ['title','description','created','modified','modified','url']

    ```

Как мой get_instances_from_related будет таким, чтобы при обновлении поля type в Cartype мой индекс elaticsearch также получит обновления

то есть я должен получить обновленное значение type, если я выполню _search

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...