当前位置: 首页 > 知识库问答 >
问题:

ElasticSearch:允许零参数的查询

方飞翼
2023-03-14

因此,我在Rails中的模型的ElasticSearch关注中有以下模块。

这是有效的,但是如何使每个bool查询(must、must_not、filter)接受nil或空参数呢?

假设我传递一个空的query_string,它将获得所有文档。然后,当我传递一个空的size参数时,它将返回所有大小。

  module ClassMethods
    def home_page_search(query_string, size, start_date, end_date)
      search({
        query: {
          bool: {
            must: [
              {
                multi_match: {
                  query: query_string,
                  fields: [:brand, :name, :notes, :size_notes]
                }
              }
            ],
            must_not: [
              range: {
                unavailable_dates: { gte: start_date, lte: end_date }
              }
            ],
            filter: [
              { term: { size: size } }
            ]
          }
        }
      })
    end
  end

共有1个答案

朱慈
2023-03-14

我解决了一个类似的问题,通过在更多的按需基础上构造查询字符串,所以只有在有搜索词的情况下才包含子句。我发送给Elasticsearch的查询只包含用户实际设置的术语。例如:

if size.present?
  query[:query][:bool][:filter] = { term: { size: size } }
end

(假设查询的正确表示,等等)

 类似资料:
  • 在安装弹性搜索插件Analysis-Phophetic时,它显示了这样的错误:在运行这个命令之前,我首先运行了elasticsearch.bat,但仍然无法工作。

  • 我有一个用Swagger描述的POSTendpoint,我希望这个endpoint也有查询参数。我们使用1.2 swagger格式是因为传统原因。我们使用3scale,它托管文档,您可以在他们的web UI中编辑您的swagger。然而,当我试图保存文档时,它给我以下错误。 < code>JSON规范不能在同一方法上有paramType='body '和param type = ' query '

  • 注意:这个问题与这里的问题不同,因为我需要它来处理Swagger。 给定一个 FastAPI endpoint,我想允许任意一组 URL 参数,同时保持 Swagger 支持。 我的用例是,我想支持一组类似JSON API的查询参数,例如: 方括号的使用阻止了我使用传统的类来建模查询参数,所以我直接使用对象来代替。但是,我想使用Swagger来测试endpoint。我找不到提供任意URL参数的方法

  • 本文向大家介绍允许多个索引器参数?相关面试题,主要包含被问及允许多个索引器参数?时的应答技巧和注意事项,需要的朋友参考一下 参数的个数和类型都是任意的。加分的补充回答:用reflector反编译可以看出,索引器的内部本质上就是set_item、get_item方法。 基础知识: 索引的语法: public string this[string s],通过get、set块来定义取值、赋值的逻辑 索引

  • 问题内容: 如何只允许本地请求进行Elasticsearch?所以命令像: 只能在localhost上运行,并要求类似: 会被拒绝? 因为从我看来,elasticsearch默认情况下允许它。 编辑: 根据http://www.elasticsearch.org/guide/reference/modules/network.html, 您可以管理参数以允许主机。默认情况下,它设置为 问题答案:

  • 我一直在捕捉非数字时遇到问题。 我试过了,但抓不住。如果我让它捕获非数字,但不让用户再次尝试输入。。。它完全停止了我的代码。 这是我的密码: