"error": "не найден обработчик для uri [/api/v1/core/search/name/test] и метода [GET]".
Я впервые пытаюсь реализовать elasticsearch в Django rest framework. Но когда я вызываю api на порту 9200, я получаю вышеуказанную ошибку. Я проверил все и не смог понять, в чем причина,
Мои модели:
class Category(models.Model):
name = models.CharField(max_length=255)
description = models.TextField(blank=True)
status = models.BooleanField(default=True)
class PaginatedElasticSearchAPIView(APIView, LimitOffsetPagination):
serializer_class = None
document_class = None
@abc.abstractmethod
def generate_q_expression(self, query):
"""This method should be overridden
and return a Q() expression."""
def get(self, request, query):
try:
q = self.generate_q_expression(query)
search = self.document_class.search().query(q)
response = search.execute()
print(f'Found {response.hits.total.value} hit(s) for query: "{query}"')
results = self.paginate_queryset(response, request, view=self)
serializer = self.serializer_class(results, many=True)
return self.get_paginated_response(serializer.data)
except Exception as e:
return HttpResponse(e, status=500)
class CategorySearchView(PaginatedElasticSearchAPIView):
serializer_class = CategorySerializers
document_class = CategoryDocument
def generate_q_expression(self, query):
return Q(
"multi_match",
query=query,
fields=[
"name",
],
fuzziness="auto",
)
My serializers. py
class CategorySerializer(serializers.ModelSerializer):
class Meta:
model = Subject
fields = ["id", "name","description","status"]
My documents.py:
@registry.register_document
class CategoryDocument(Document):
# name = TextField()
class Index:
name = "category"
settings = {"number_of_shards": 1, "number_of_replicas": 0}
class Django:
model = Category
fields = [
"name","description"
]
Мой urls.py :
http://127.0.0.1:9200/api/v1/search/family
Я попытался вызвать порт 9200 для категории family, но он показывает вышеуказанную ошибку.
Мои настройки:
ELASTICSEARCH_DSL={
'default': {
'hosts': 'localhost:9200'},
}
Мой файл elasticsearch.yml:
network:
host: 0.0.0.0
:http:
port: 9200
xpack.security4rff.enabled: false