2015-10-28 69 views
0

我想知道是否有可能結合兩種查詢類型,在我的情況下,我需要一個queryString和篩選查詢,每個都必須在不同的字段上操作。 過濾得到的所有記錄誰在POST_ID 的$postids $postids:multiple值和查詢字符串的查詢來搜索文本 一段話目前我需要兩個請求歸檔此: 查詢過濾:Elasticsearch在一個請求中結合了兩種不同的查詢

GET /myindex1/tweecoms/_search 
{ 
"query" : { 
     "filtered" : { 
      "filter" : { 
       "terms" : { 
        "post_id" : ['.$postids.'] 
       } 
      } 
     } 
} 

query String: 

GET /myindex1/tweecoms/_search{ 
"query": { 
        "query_string": { 
         "query": "*' . $sujet . '*", 
         "lenient": true 
        } 
        } 
} 

和我試圖將其結合

GET /myindex1/tweecoms/_search 

{ 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "query_string": { 
         "query": "hhhh", 
         "lenient": true 
        } 
     }, 
     { 
      "filtered" : { 
      "filter" : { 
       "terms" : { 
        "post_id" : [0,157] 
       } 
      } 
     } 
     } 
     ] 
    } 
    } 
}` 

,但我做的嘗試只運行查詢字符串

回答

0

我認爲你需要在filtered子句中寫查詢。 This會幫助你理解。 嘗試是您正在使用應該條款,將選擇與給定的查詢字符串或文件,或者使用那些給post_ids這個

{ 
    "query": { 
    "filtered": { 
     "query": { 
     "query_string": { 
      "query": "keyword" 
     } 
     }, 
     "filter": { 
     "terms": { 
      "post_id": [0,157] 
     } 
     } 
    } 
    } 
} 

與您查詢的問題。您可以用must代替should,並且會得到預期的結果。

你也可以使用minimum_should_match參數查詢裏面

我希望這有助於

+0

什麼,我想要做的是有2個結果,而不是過濾查詢的查詢字符串我,我要過濾的數據查詢字符串我想要查​​詢字符串的結果和過濾器的結果,這就是我想要的是,在第二個查詢中,我希望他向我顯示post_id示例post_id in [0,1,2]並感謝你的回答 – user2310859

相關問題