python - 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')
解决方案
您可以使用通配符 ( *
) 作为索引来搜索所有文档。
实施细节可能会随着时间而改变。有关您的 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)
推荐阅读
- .net - Nupkg 未从 gitinfo.txt 读取 baseversion
- r - 查找时间序列中的历史最大值
- javascript - 如何根据按钮的点击事件提供此功能的不同道具?
- apache-spark - Delta Lake 回滚
- python - 如何使用 while 循环重复一段代码并使用每个“计数”?
- photon - RPC 后立即离开 Photon 房间
- parallel-processing - 为什么相同的 OpenCL 代码从 Intel Xeon CPU 和 NVIDIA GTX 1080 Ti GPU 具有不同的输出?
- git - Git服务器端钩子:如何从服务器端获取远程URL
- python - 无法将 APK 发布到生产轨道 google api v3 androidpublish
- php - 如何在 Laravel 5.4 中删除 url() 生成的 %2F