"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
Вернуться на верх