簡體   English   中英

帶過濾器的 ElasticSearch query_string 未能獲得結果

[英]ElasticSearch query_string with filter failed to get the results

我有以下 Elasticsearch 查詢(它通常更大,但刪除了導致問題的部分):

'query' => [
    'bool' => [
        'must' => [
            'query_string' => [
                'query' => $keywords,
                'fields' => ['title']
            ]
        ],
        'filter' => [
             'term' => [
                'school_id' => 1
            ]
         ]
    ]
]

但是如果我刪除過濾器它工作正常,但我想要的是只過濾具有特定學校 ID 的搜索。

為什么不過濾數據而不是過濾數據 - 只需首先獲取您需要的內容?

過濾用於二進制結果 - 從某種意義上說,如果您想知道文檔字段school_id是否為1 如果您只想獲得結果,還有其他方法可以做到。

在您的情況下,我認為您只是“跳過”了mustbool ,這就是您的查詢失敗的原因。

因此,您有 2 個選項,第一個修復您的選項如下:

GET /_search
{
  "query": {
    "bool": {
      "must": {
        "query_string": {
          "default_field": "keywords",
          "query": "title"
        }
      },
      "filter": {
        "bool": {
          "must": [
            {
              "term": {
                "school_id": "1"
              }
            }
          ]
        }
      }
    }
  }
}

或者,如果您希望對結果進行評分,您可以使用以下方法:

GET /_search
{
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "default_field": "keywords",
            "query": "title"
          }
        },
        {
          "match": {
            "school_id": {
              "query": "1"
            }
          }
        }
      ]
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM