Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Haystack Multiple Indices - indexed same even there are different search_indexes

I have the following search

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")

And following settings in 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',
    }
}

But when I say rebuild_indexes, two index become the same, they index according to both index classes. But I want default index to be indexed with ProductIndex and autocomplete to be indexed with Destination index.

Any ideas?

like image 392
tuna Avatar asked Oct 16 '25 04:10

tuna


1 Answers

You can exclude indexes using key 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'],
    }
}
like image 91
Aamir Rind Avatar answered Oct 17 '25 16:10

Aamir Rind



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!