Pythons Elasticsearch-DSL 过滤器,用于从值列表中恰好匹配一个

Pythons Elasticsearch-DSL filter for exactly one match from list of values

我看到了一些真实的帖子,但其中 none 符合我的确切问题。

使用 Python 2.7 和 Elasticsearch-dsl(6.3,这也是我的 Elasticsearch 版本)。

我想做类似的事情,

s = Search(using=elastic_conn, index='my_index').filter("match", service_name=['exmp_name1', 'exmp_name2'])

虽然这个语法不起作用。

我希望取回带有 service_name == 'exmp_name1'service_name == 'exmp_name2'

的所有文档

我更喜欢使用过滤器上下文而不是查询上下文,因为据我了解它更快,而且评分对我来说真的不重要,只是绝对匹配(或不匹配)。

我怎样才能实现这种行为?

谢谢

好的。我所需要的只是按 terms 而不是 match.

进行过滤

terms 语法支持多个值。

工作代码:

s = Search(using=elastic_conn, index='audit').filter("terms", service_name=['exmp_name1', 'exmp_name2'])