Ниже приведены мои инструкции оболочки iPython:
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
Моим основным требованием было создание запроса с использованием высокоуровневой библиотекиasticsearch-dsl-py в проекте django на основе нескольких входных данных и критериев фильтрации.
Для простоты объяснения и простоты конструирования кода я составил запрос в стиле словаря (json), как базовые запросыasticsearch, затем я использую метод from_dict (dictionary_object) из библиотекиasticsearch_dsl и вызываюcount () и execute () для результата для моих целей.
Показанный выше пример является меньшим, но проблема ясно видна.Используя from_dict, я получаю вдвое больше результатов, чем когда я использую синтаксис высокого уровня (ответ 42 выше верен), кто-нибудь может объяснить, почему так?