Я использую тестовый пример elasti c ищу здесь ссылку на документы https://django-elasticsearch-dsl-drf.readthedocs.io/en/0.1.8/quick_start.html с django rest.
Я сделал то же самое, что и документы, но в моем случае это не работает. Кроме того, в документации запускайте сервер на порту 8000, если я запускаю сервер с этим портом Connection error failed
выдает ошибку, но если я запускаю на порту 9200, он работает, но возвращает 404 на изображении, показанном ниже
введите описание изображения здесь
вот мой код:
book.py
@BOOK_INDEX.doc_type
@registry.register_document
class BookDocument(Document):
"""Book Elasticsearch document."""
id = fields.IntegerField(attr='id')
title = fields.TextField(
analyzer=html_strip,
fields={
'raw': fields.TextField(
analyzer='keyword'
)
}
)
description = fields.TextField(
analyzer=html_strip,
fields={
'raw': fields.TextField(
analyzer='keyword'
)
}
)
summary = fields.TextField(
analyzer=html_strip,
fields={
'raw': fields.TextField(
analyzer='keyword'
)
}
)
publisher = fields.TextField(
attr='publisher_indexing',
analyzer=html_strip,
fields={
'raw': fields.TextField(
analyzer='keyword'
)
}
)
publication_date = fields.DateField()
state = fields.TextField(
analyzer=html_strip,
fields={
'raw': fields.TextField(
analyzer='keyword'
)
}
)
isbn = fields.TextField(
analyzer=html_strip,
fields={
'raw': fields.TextField(
analyzer='keyword'
)
}
)
price = fields.FloatField()
pages = fields.IntegerField()
stock_count = fields.IntegerField()
tags = fields.TextField(
attr='tags_indexing',
analyzer=html_strip,
fields={
'raw': fields.TextField(
analyzer='keyword',
multi=True
)
},
multi=True
)
class Django:
"""Meta options."""
model = Book # The model associate with this DocType
views.py
class BookDocumentView(DocumentViewSet):
"""The BookDocument view."""
document = BookDocument
serializer_class = BookDocumentSerializer
lookup_field = 'id'
filter_backends = [
FilteringFilterBackend,
IdsFilterBackend,
OrderingFilterBackend,
SearchFilterBackend,
]
# Define search fields
search_fields = (
'title',
'description',
'summary',
)
# Define filter fields
filter_fields = {
'id': {
'field': 'id',
# Note, that we limit the lookups of id field in this example,
# to `range`, `in`, `gt`, `gte`, `lt` and `lte` filters.
'lookups': [
LOOKUP_FILTER_RANGE,
LOOKUP_QUERY_IN,
LOOKUP_QUERY_GT,
LOOKUP_QUERY_GTE,
LOOKUP_QUERY_LT,
LOOKUP_QUERY_LTE,
],
},
'title': 'title.raw',
'publisher': 'publisher.raw',
'publication_date': 'publication_date',
'state': 'state.raw',
'isbn': 'isbn.raw',
'price': {
'field': 'price.raw',
# Note, that we limit the lookups of `price` field in this
# example, to `range`, `gt`, `gte`, `lt` and `lte` filters.
'lookups': [
LOOKUP_FILTER_RANGE,
LOOKUP_QUERY_GT,
LOOKUP_QUERY_GTE,
LOOKUP_QUERY_LT,
LOOKUP_QUERY_LTE,
],
}...
кто-нибудь может мне помочь с этой проблемой? В общем правильно ли я запускаю сервер на 9200 порту? Заранее спасибо!