0
ユーザトークンによるフィルタリングを行うために、私はElasticSearch接続をDjango URLでプロキシする必要があると信じています。フィルタリングのためにDjango経由でMy Elastic Search接続をプロキシする
localhost:9200/_search
を経由する代わりに、localhost:8000/myapi/elastic/_search
を使用します。
接続方法が不明です。私はmyapp.search輸入TaskIndexからシリアライザ/ビューの設定
myappに/ search.py
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
を使用してみました
class ElasticSerializer(serializers.ModelSerializer):
class Meta:
model = TaskIndex
API/views.py
class ElasticViewSet(viewsets.ModelViewSet):
queryset = TaskIndex.objects.none()
serializer_class = ElasticSerializer
api/urls.py
router.register(r'elastic', ElasticViewSet)