如何解决在 Elasticsearch DSL DRF 上搜索嵌套字段
这是 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'],}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。