python – Haystack Multiple Indices – 索引相同,即使有不同的search_indexes
作者:互联网
我有以下搜索
class ProductIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
destination = indexes.FacetIntegerField(
model_attr='hotel__destination__id')
country = indexes.FacetIntegerField(model_attr='hotel__country__id')
hotel_class = indexes.FacetCharField(model_attr='hotel__hotel_class')
hotel_type = indexes.FacetIntegerField(model_attr='hotel__hotel_type__id')
def get_model(self):
return Product
def index_queryset(self, using=True):
return self.get_model().objects.all()
class DestinationIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
content_auto = indexes.EdgeNgramField(model_attr="foo")
并在settings.py中进行以下设置
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE':
'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
'URL': 'http://127.0.0.1:9200/',
'INDEX_NAME': 'haystack',
},
'autocomplete': {
'ENGINE':
'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
'URL': 'http://127.0.0.1:9200/',
'INDEX_NAME': 'autcomplete',
}
}
但是当我说rebuild_indexes时,两个索引变得相同,它们根据两个索引类进行索引.但我希望使用ProductIndex索引默认索引,并使用目标索引索引自动完成.
有任何想法吗?
解决方法:
您可以使用键EXCLUDED_INDEXES排除索引:
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE':
'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
'URL': 'http://127.0.0.1:9200/',
'INDEX_NAME': 'haystack',
'EXCLUDED_INDEXES': ['my_destination_app.search_indexes.DestinationIndex'],
},
'autocomplete': {
'ENGINE':
'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
'URL': 'http://127.0.0.1:9200/',
'INDEX_NAME': 'autcomplete',
'EXCLUDED_INDEXES': ['my_product_app.search_indexes.ProductIndex'],
}
}
标签:django-haystack,python,django 来源: https://codeday.me/bug/20190728/1567011.html