[英]Python elasticsearch dsl search multi fields and order result
我如何在多字段的 elasticsearch dsl python 模塊中搜索,例如title
和body
字段,並通過created_at
字段 DESC 對其進行排序。
我有這個僅在title
字段上搜索的示例:
q = request.GET.get('q', None)
s = Search(using=elastic_client, index='post').query('match', title=q)
response = s.execute()
我怎樣才能做到這一點?
找到解決方案:
from elasticsearch_dsl.query import MultiMatch
q = request.GET.get('q', None)
query = MultiMatch(query=q, fields=['title', 'body'], fuzziness='AUTO')
s = Search(using=elastic_client, index='post').query(query)
response = s.execute()
現在還有MultiSearch類。 所以你有可能:
from elasticsearch_dsl import MultiSearch, Search
ms = MultiSearch(index='post')
ms = ms.add(Search().filter('term', tags='title'))
ms = ms.add(Search().filter('term', tags='body'))
responses = ms.execute()
然后你可以對它進行分組,排序,等等。 但結果是每個過濾器的響應集合。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.