首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Django代理我的弹性搜索连接以进行过滤

通过Django代理我的弹性搜索连接以进行过滤
EN

Stack Overflow用户
提问于 2017-03-15 07:32:44
回答 1查看 290关注 0票数 0

我认为我需要通过Django URL代理我的ElasticSearch连接,以便按用户令牌进行过滤。

因此,我想使用localhost:8000/myapi/elastic/_search,而不是通过localhost:9200/_search

我不确定如何将它们连接起来。我已经尝试使用序列化程序/视图设置

myapp/search.py

代码语言:javascript
复制
class TaskIndex(DocType):
    title = String()
    class Meta:
        index = 'task-index'

# Bulk indexing function, run in shell
def bulk_indexing():
    TaskIndex.init()
    es = Elasticsearch()
    bulk(client=es, actions=(b.indexing() for b in models.Task.objects.all().iterator()))

# Simple search function
def _search(title):
    s = Search().filter('term', title=title.text)
    response = s.execute()
    return response

api/serializers.py

从myapp.search导入TaskIndex

代码语言:javascript
复制
class ElasticSerializer(serializers.ModelSerializer):
    class Meta:
        model = TaskIndex

api/views.py

代码语言:javascript
复制
class ElasticViewSet(viewsets.ModelViewSet):
    queryset = TaskIndex.objects.none()
    serializer_class = ElasticSerializer

api/urls.py

代码语言:javascript
复制
router.register(r'elastic', ElasticViewSet)
EN

回答 1

Stack Overflow用户

发布于 2017-05-12 13:46:52

这就是我是如何做到的。非常简单的方法:

views.py

代码语言:javascript
复制
from services import elastic_result

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

services.py

代码语言:javascript
复制
import requests
import json

def elastic_result(id, request):
    requestdata = json.loads(request.body)
    r = requests.post('http://localhost:9200/_search', json=requestdata)
    items = r.json()
    return Response(items)

urls.py

代码语言:javascript
复制
import ElasticView
url(r'^elastic/_search', ElasticView.as_view()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42798470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档