【问题标题】:Using match_all with filters将 match_all 与过滤器一起使用
【发布时间】:2019-09-26 07:55:44
【问题描述】:

我有一个允许用户查询数据集和应用过滤器的页面。他们还可以应用过滤器而无需使用字符串进行查询。为此,我尝试将 match_all 与过滤器一起使用,但出现以下错误

"{"error":{"root_cause":[{"type":"parsing_exception","re​​ason":"[match_all] 格式错误的查询,应为 [END_OBJECT],但已找到 [FIELD_NAME]","line":1,"col":26}],"type":"parsing_exception","re​​ason":"[match_all] 格式错误的查询,应为 [END_OBJECT],但已找到 [FIELD_NAME]","line":1,"col":26},"status":400}",

这是我正在构建并发送到弹性客户端的搜索参数的示例。

[
  "type" => "events"
  "index" => "events"
  "body" => [
    "query" => [
      "match_all" => {}
      "bool" => [
        "filter" => [
          "range" => [
            "start_date.date" => [
              "gte" => "01/05/2019"
              "lte" => "05/2019"
              "format" => "dd/MM/yyyy||MM/yyyy"
            ]
          ]
        ]
      ]
    ]
    "from" => 0
    "size" => 30
  ]
]

我似乎无法弄清楚如何使用它们。任何指针?谢谢。

【问题讨论】:

    标签: php elasticsearch search


    【解决方案1】:

    您需要将查询包装在 bool 查询中,如下所示:

    "query": {
        "bool" : {
            "must" : {
            "match_all": {}
            },
            "filter": {
            "range" : { /* your filter here*/ }
            }
        }
    }
    

    只需将 boolmust 查询包裹在您的 match_all 周围,它应该可以工作。

    我不知道确切的 PHP 语法,但应该是这样的:

    [
      "type" => "events"
      "index" => "events"
      "body" => [
        "query" => [
          "bool" => [
            "must" => [ "match_all" => {}]
            "filter" => [
              "range" => [
                "start_date.date" => [
                  "gte" => "01/05/2019"
                  "lte" => "05/2019"
                  "format" => "dd/MM/yyyy||MM/yyyy"
                ]
              ]
            ]
          ]
        ]
        "from" => 0
        "size" => 30
      ]
    ]
    

    有关参考,请参阅文档 Elasticsearch Reference [7.0] » Query DSL » Compound queries » Bool Query,它包含一个类似您的示例,其中 match_all 与过滤器结合使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 2017-08-17
      • 2021-04-02
      • 2017-08-12
      • 2021-10-04
      • 2019-03-31
      • 2011-05-31
      相关资源
      最近更新 更多