请在我的 iPython shell 语句下面找到:
In [90]: s = Search(using=client, index='institutes')
In [91]: s = s.filter('match_phrase',country__uri='canada').filter("nested", path="institutecourse_set", query=Q("match_phrase", **{'institutecourse_set.stream.uri': 'sciences'}))
In [92]: di = s.to_dict()
In [93]: s1 = Search(using=client, index='institutes')
In [94]: s1 = s1.from_dict(di)
In [95]: s1.count()
Out[95]: 84
In [96]: s.count()
Out[96]: 42
我的基本要求是在 django 项目中使用高级库 elasticsearch-dsl-py 基于多个输入和过滤条件构建查询。
为了易于解释和易于构建代码,我将查询组成为字典(json)样式,就像基本的 elasticsearch 查询一样,然后我利用 elasticsearch_dsl 库中的“from_dict(dictionary_object)”方法并调用 count() 和 execute( ) 关于我的目的的结果。
上面显示的是一个较小的示例,但问题很明显。当我使用高级语法时,使用 from_dict 得到双倍的结果(上面的答案 42 是正确的),谁能解释为什么会这样?