0
我通過這裏傳遞一些參數來限制查詢結果,並且query_string在url中傳遞。雖然,我也給了請求主體來過濾結果。如何在同一時間使用body和GET參數?
curl -XGET 'http://localhost:9200/books/fantasy/_search?from=0&size=10&q=%2A' -d '{
"query":{
"filtered":{
"filter":{
"exists":{
"field":"speacial.ean"
}
}
}
}
}'
我只是想檢查是這種方法好嗎?有沒有這樣做的缺點?或者當我使用body的時候,我應該在URL中傳遞任何參數?
這似乎工作,但這是不好的做法?
問題是GET請求不使用主體(即它沒有主體)。當您使用GET方法時,curl可能會將-d數據轉換爲url參數。你可以在服務器日誌中檢查這個嗎? –
你確定嗎? 「HTTP GET和HTTP POST都可以用來執行搜索,因爲並非所有的客戶端都支持GET,所以POST也是允許的。」 - https://www.elastic.co/guide/en/elasticsearch/reference/1.3/search-request-body.html – lehtu
同樣值得注意的是,Sense這樣的工具會給出警告:'瀏覽器不支持GET請求。這將作爲POST'執行,並在發送有效負載時靜默地將GET轉換爲POST。 ES端點同時接受,但正確的HTTP方式是從不用GET發送一個有效載荷......當我這樣做時發現了一些奇怪的錯誤,並且調試它們並不總是直截了當的。 – Val