Я настраиваю ElasticSearch и хотел бы проиндексировать несколько полей из связанного объекта по имени. Как бы вы сделали это правильно?
Мой индекс выглядит так:
class ArticleIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
title = indexes.CharField(model_attr='title')
updatedAt = indexes.DateTimeField(model_attr='updatedAt')
date = indexes.DateTimeField(model_attr='date', null=True)
description = indexes.CharField(model_attr='description')
annotations = indexes.CharField(faceted=True)
companies = indexes.MultiValueField(faceted=True)
Теперь я хотел бы получить доступ к компаниям в качестве словаря, поэтому в своих шаблонах я мог бы сделать что-то вроде:
{% for comp in companies %}
{{ comp.dnbNumber }}
{{ comp.primaryName }}
{% endfor %}
Пока я пытался:
def prepare_companies(self, obj):
return [{company['dnbNumber'], company['primaryName'], company['cleanName']} for company in obj.companies.all()
.values('dnbNumber', 'primaryName', 'cleanName')]
def prepare_companies(self, obj):
companies = [(company['dnbNumber'], company['primaryName'], company['cleanName']) for company in obj.companies.all()
.values('dnbNumber', 'primaryName', 'cleanName')]
return [{'dnbNumber': comp[0], 'primaryName': comp[1], 'cleanName':comp[2]} for comp in companies]
Если вы искали ответы в Google, но не смогли их найти.
Любая помощь приветствуется.
Заранее спасибо.
P.S. Я новичок в Elasticsearch