我看到了一些实际发布的帖子,但没有一个与我的确切问题相符。
将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'
我更喜欢使用过滤器上下文,而不是查询上下文,因为据我所知,它更快并且评分对我而言并不重要,只是绝对匹配(或不匹配)。
如何实现这种行为?
谢谢
答案 0 :(得分:0)
好的。我需要做的只是用terms
过滤,而不是match
。
terms
语法支持多个值。
工作代码:
s = Search(using=elastic_conn, index='audit').filter("terms", service_name=['exmp_name1', 'exmp_name2'])