Django-elasticsearch-dsl не возвращает все записи, соответствующие условию запроса
Я пишу сайт на Django. Я разрабатываю систему поиска по сайту, используя django-elasticsearch-dsl. Но я заметил проблему, что не все записи, удовлетворяющие условию поиска, отображаются.
Например, я знаю, что в моей базе данных есть 6 книг, содержащих слово 'Python', но когда я использую команду
books = BookDocument.search().query('match', title='Python')
django-elasticsearch-dsl дает мне только 3 записи
books = BookDocument.search().query('match', title='Python')
for i in books:
print(i.title)
|||||||||||||
Укус Python
Програмуємо на Python
Django:Практика створення Web-сайтів на Python
Остальные 3 не отображаются
Вот мой класс BookDocument:
@registry.register_document
class BookDocument(Document):
"""
Індексація таблиці БД Book для Elasticsearch-пошуку
Згідно із документацією django-elasticsearch-dsl
https://django-elasticsearch-dsl.readthedocs.io/en/latest/fields.html
"""
image = FileField()
category = ObjectField(properties={
'title': TextField(),
'pk': IntegerField()
})
authors = NestedField(properties={
'pk': IntegerField(),
'name': TextField()
})
class Index:
name = 'book'
settings = {
'number_of_shards': 1,
'number_of_replicas': 0
}
class Django:
model = Book
fields = [
'id',
'title',
'description',
]
related_models = [Category, Author]
def get_instances_from_related(self, related_instance):
if isinstance(related_instance, Category):
return related_instance.book_set.all()
if isinstance(related_instance, Author):
return related_instance.book_set.all()
Возможно, кто-то уже сталкивался с этим и знает, как это исправить