首页 > 解决方案 > django-elasticsearch-dsl:如何搜索多个文档?

问题描述

我在 Django 中有几个 ElasticSearch 文档,每个文档描述了不同类型的对象:“MovieDoc”、“CartoonDoc”等。现在,我可以单独搜索每个此类文档:

document = MovieDoc
results = document.search().query('some phrase')

但是,如果我想一次搜索所有文档并获得完全按相关性排序的结果(即不搜索每个单独的文档并在其后合并)怎么办?

我根据 elasticsearch-dsl 的文档尝试了类似的方法,但这没有产生任何结果:

from elasticsearch_dsl import Search    
results = Search(index=['movie_docs', 'cartoon_docs']).query('some phrase')

标签: pythondjangoelasticsearch

解决方案


您可以使用通配符 ( *) 作为索引来搜索所有文档。

实施细节可能会随着时间而改变。有关您的 Elasticsearch 版本的信息,请参阅有关多目标语法的文档。

from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search

client = Elasticsearch()

s = Search(using=client, index="*")

response = s.execute()

for hit in response:
    print(hit)

推荐阅读