Python的Elasticsearch-DSL过滤器可从值列表中精确匹配一个

时间:2018-11-04 10:16:25

标签: elasticsearch dsl querydsl elasticsearch-dsl elasticsearch-dsl-py

我看到了一些实际发布的帖子,但没有一个与我的确切问题相符。

将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'

取回所有文档。

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

如何实现这种行为?

谢谢

1 个答案:

答案 0 :(得分:0)

好的。我需要做的只是用terms过滤,而不是match

terms语法支持多个值。

工作代码:

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