【问题标题】:Django-dsl-drf Exclude phrase queryDjango-dsl-drf 排除短语查询
【发布时间】:2020-11-25 15:42:47
【问题描述】:

我正在将 Elastic Search 集成到我的现有 Django REST 应用程序中。我正在使用下面链接中提供的 django-dsl-drf 模块:

https://django-elasticsearch-dsl-drf.readthedocs.io/

在他们的文档中提供了 'exclude' 查询参数。但是只有当我们提供完整的字段值时才可以查询。

search-url?exclude=

例如:如果我在字段“名称”中有值“Stackoverflow”。我必须提供查询参数 ?name__exclude=Stackoverflow 在结果中排​​除名称为“Stackoverflow”的记录。我想以这样一种方式实现搜索,当我提供“over”时,我需要排除这些记录,类似于 ?name__exclude=over

我查看了上面的教程,但找不到。是否有任何解决方法可以排除记录、包含术语的字段,而不是提供完整的字段值,这也是不区分大小写的。

非常感谢。

【问题讨论】:

    标签: django elasticsearch django-rest-framework


    【解决方案1】:

    使用contains functional filter,您可以定位名称字段值包含字符over 的文档:

    ?name__contains=over
    

    但是,据我所知,没有办法否定 django-dsl-drf 中的过滤器。不过,您可以create an issue 请求该功能,因为很有可能您不是唯一需要该功能的人,因为这是一种非常常见的搜索方式。

    【讨论】:

    • 酷,很高兴它有帮助!
    • 我在他们的仓库中创建了一个新问题。与此同时,我调整了排除功能以满足我的要求。
    • 太好了,很高兴你想出了办法!
    • 如果它对您有帮助,您仍然应该接受答案 ;-)
    猜你喜欢
    • 2021-02-08
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    相关资源
    最近更新 更多