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'])
我看到了一些真实的帖子,但其中 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'])