2017-03-16 5 views
0

Ich versuche, meine ElasticSearch-Verbindung über Django Proxy.ElasticSearch zu Django APIView - Django stripping wichtige Daten

Ich möchte die Django-URL so verhalten, als würde sie direkt mit Elastic Search (: 9200) verbinden.

jedoch jedes Mal die Django URL „_search“ -Anfrage, die Teil der ES Antwort entfernt wurde

Django gibt mir „Hits“ directly- nicht die anderen wichtigen Daten (zB 'macht nahm ',' Zeit abgelaufen ',' Shards 'usw.)

Ich habe die gleichen Anrufe (dh das Senden der gleichen Parameter) von DJANGO und ES direkt hier- [link] [1] verglichen.

Wie kann ich verhindern, dass django diese Daten filtert/blockiert?

services.py

def elastic_result(id, request): 
    url = 'http://localhost:9200/_search' 
    r = requests.post('http://localhost:9200/_search', params=request.data) 
    items = r.json() 
    return Response(items) 

views.py

from services import elastic_result 

class ElasticView(APIView): 
    permission_classes=[] 
    def post(self, request): 
     item_list = elastic_result(id, request) 
     return item_list 
     pass 

url

router.register(r'elastic/_search', ElasticView, base_name='Elastic') 

Antwort

0

Ah sehr einfach, eintrafen meine Parameter nicht!

def elastic_result(id, request): 
    url = 'http://localhost:9200/_search' 
    r = requests.post('http://localhost:9200/_search', params=request.data) 
    items = r.json() 
    return Response(items) 

Ich brauche nur params=request.data-json=request.data zu ändern und voila :)

Verwandte Themen