问题描述
这是 document.py
@chapter_index.doc_type
class ChapterDocument(Document):
subject = fields.ObjectField(properties={
'name': fields.TextField(),'description': fields.TextField()
})
topics = fields.nestedField(properties={
'name': fields.TextField(),'description': fields.TextField(analyzer=html_strip),'duration': fields.IntegerField()
})
class Django:
model = Chapter
fields = [
'name','description','order_no'
]
related_models = [Subject,Topic]
def get_queryset(self):
return super(ChapterDocument,self).get_queryset().select_related(
'subject'
)
def get_instances_from_related(self,related_instance):
if isinstance(related_instance,Subject):
return related_instance.chapters.all()
if isinstance(related_instance,Topic):
return related_instance.chapter
这是 DocumentViewSet
class ChapterSearchViewSet(DocumentViewSet):
document = ChapterDocument
serializer_class = ChapterDocumentSerializer
filter_backends = [
SearchFilterBackend,]
search_fields = (
'subject.name','subject.description','name',)
search_nested_fields = {
'topics': ['description']
}
search_fields 正在运行。当我想在 nestedField 上搜索时,search_nested_fields 不起作用。我收到这样的错误。这来自 search_nested_fields 中的 'topics': ['description']。
索引正在工作。我想按主题描述搜索章节。也许我在 search_nested_fields 中使用了错误的格式。我遵循了 elasticsearch-dsl-drf 文档。但是出现这个错误!
解决方法
根据elasticsearch-dsl-drf documentation,声明search_nested_fields
的新方法是这样的:
search_nested_fields = {
'topics': {
'path': 'topics','fields': ['description'],}
}