【问题标题】:Upgrading Elasticsearch DSL升级 Elasticsearch DSL
【发布时间】:2017-05-20 15:32:14
【问题描述】:

我有一个看起来像这样的查询(使用 Elasticsearch DSL v0.0.11)

    s = s.filter(
        'or',
        [
            F('term', hide_from_search=False),
            F('not', filter=F('exists', field='hide_from_search')),
        ]
    )

我将如何使用 v2.x 编写它? F 函数什么时候消失了?

以某种方式使用Q 函数?

【问题讨论】:

    标签: python-2.7 elasticsearch elasticsearch-dsl


    【解决方案1】:

    你可以这样做:

    q = Q('bool',
          should=[
            Q('term', hide_from_search=False),
            ~Q('exists', field='hide_from_search'),
          ],
          minimum_should_match=1
    )
    s = Search().query(q)
    

    或者像这样更简单:

    q = (Q('term', hide_from_search=False) | ~Q('exists', field='hide_from_search'))
    q.minimum_should_match = 1
    s = Search().query(q)
    

    【讨论】:

      猜你喜欢
      • 2020-12-30
      • 1970-01-01
      • 2022-01-17
      • 2021-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-01
      • 2021-02-10
      相关资源
      最近更新 更多