代码之家  ›  专栏  ›  技术社区  ›  Noam

Pythons Elasticsearch DSL筛选值列表中的恰好一个匹配项

  •  0
  • Noam  · 技术社区  · 6 年前

    我看到一些不动产的帖子,但没有一个符合我的确切问题。

    我想做一些像,

    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 回复  |  直到 6 年前
        1
  •  1
  •   Noam    6 年前

    好 啊。我所需要的只是过滤 terms match .

    这个 条款 语法支持多个值。

    工作代码:

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