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