def construct_nested_search(self, request, view):
"""Construct nested search.
:param request: Django REST framework request.
:param queryset: Base queryset.
:param view: View.
:type request: rest_framework.request.Request
:type queryset: elasticsearch_dsl.search.Search
:type view: rest_framework.viewsets.ReadOnlyModelViewSet
:return: Updated queryset.
:rtype: elasticsearch_dsl.search.Search
"""
if not hasattr(view, 'search_nested_fields'):
return []
query_params = self.get_search_query_params(request)
__queries = []
for search_term in query_params:
for path, fields in view.search_nested_fields.items():
queries = []
for field in fields:
field_key = "{}.{}".format(path, field)
queries.append(
Q("match", **{field_key: search_term})
)
__queries.append(
Q("nested",
path=path,
query=six.moves.reduce(operator.or_, queries)
)
)
return __queries
search.py 文件源码
python
阅读 37
收藏 0
点赞 0
评论 0
评论列表
文章目录