0

我看到了一些相关的帖子,但没有一个符合我的确切问题。

使用 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'我希望用OR取回所有文件service_name == 'exmp_name2'

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

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

谢谢

4

1 回答 1

1

行。我需要的只是过滤terms而不是 then match

terms语法支持多个值。

工作代码:

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

于 2018-11-04T10:27:03.840 回答