*model.py*

    
class Item(models.Model):
        name=models.CharField(max_length=50)
        company=models.CharField(max_length=100)



* search_indexes.py*
    
   
    
class ItemIndex(indexes.SearchIndex, indexes.Indexable):
            text = indexes.CharField(document=True, use_template=True)
            name=indexes.CharField(model_attr='name')
            company=indexes.CharField(model_attr='company')
            
            def get_model(self):
            return Item
            
            def index_queryset(self, using=None):
            return self.get_model().objects.all()


   *serializer.py*

   
 class ItemSearchSerializer(serializers.Serializer):
    text = serializers.CharField()
    name=serializers.CharField()
    company=serializers.CharField()

     
*views.py*
    
   
  class ItemSearchViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
    serializer_class = ItemSearchSerializer  
    permission_classes = (permissions.IsAuthenticatedOrReadOnly,) 
    
    def get_queryset(self):
    request = self.request
    queryset = EmptySearchQuerySet()
    
    if request.GET.get('q', ''):
    query = request.GET.get('q', '')
    queryset =SearchQuerySet().filter(content=query);
            return queryset

    
*And in url.py I added :*

    
router.register(r'searchquery', views.ItemSearchViewSet, base_name=
'searchquery')



 

 

Now on making GET request from postman like :
>  http://127.0.0.1:8000/searchquery/?q=app, I am getting the response as 
> desired as show below.
>     
> {
>       "count": 2,
>       "next": null,
>       "previous": null,
>       "results": [
>         {
>           "text": "apple\ndjflkj",
>           "id": 14,
>           "name": "apple",
>           "mrp": "45.000000",
>           "company": "djflkj",
>           "imageid": "jfhi",
>           "edible": false,
>           "discount": "0.000000",
>           "deliverable": true,
>           "seller_uid": "ljhkh",
>           "category": "ldjhgjfdk"
>         },
>         {
>           "text": "app\nhuhiu",
>           "id": 16,
>           "name": "app",
>           "mrp": "78.000000",
>           "company": "huhiu",
>           "imageid": "iyiugiy",
>           "edible": false,
>           "discount": "45.000000",
>           "deliverable": true,
>           "seller_uid": "hjh",
>           "category": "hhl"
>         }
>       ]
>     }
>
>
But the reponse time is very slow it takes around 2700 ms everytime ,and I 
want to make it fast. As response of elastic search is much fast
but I don't know what I am doing wrong. Not sure but may be due to these 
reasons I am getting this delay : 
1) Haystack is made for django, so on integrating it with django rest 
framework , it may be getting slow.
2) I am using free Bonsai Elastic search heroku add on and it has just 125 
mb memory.

 
*This is how I am connecting to Bonsai elastic search (setting.py)*

   
 ES_URL = urlparse('https://******@pine-1455731.us-east1.bonsaisearch.net')
    print ES_URL
    HAYSTACK_CONNECTIONS = {
        'default': {
            'ENGINE': 
'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
            'URL': ES_URL.scheme + '://' + ES_URL.hostname + ':443',
            'INDEX_NAME': 'haystack',
        },
    }
    
    if ES_URL.username:
        HAYSTACK_CONNECTIONS['default']['KWARGS'] = {"http_auth": 
ES_URL.username 
+ ':' + ES_URL.password} 




      
Any help will be appreciated. I am new to elastic search and haystack . I 
want to do elastic search to search products by name for my android 
application.
I even don't know weather this is the correct approach to do searching. I 
thought I would enter name of product I want to search and then i will send 
a GET request and get all the products which are related.    

If any one could suggest me any other way of achieving this I will 
appreciate your help.   


-- 
You received this message because you are subscribed to the Google Groups 
"django-haystack" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-haystack+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to