[英]Elasticsearch - Unable to get filter to work with 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
。 如果您只想獲得結果,還有其他方法可以做到。
在您的情況下,我認為您只是“跳過”了must
和bool
,這就是您的查詢失敗的原因。
因此,您有 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.