我正在通過彈性搜索頭插件試驗彈性搜索。在彈性搜索中使用GET/POST時的不同結果
結果與我通過POST提交查詢時的預期結果一致。
但是,當我使用GET嘗試相同的查詢時,我總是返回索引中的所有值。
因此:如何通過GET將查詢傳遞給彈性搜索服務器,以便我可以在URL中使用搜索字符串?
我正在通過彈性搜索頭插件試驗彈性搜索。在彈性搜索中使用GET/POST時的不同結果
結果與我通過POST提交查詢時的預期結果一致。
但是,當我使用GET嘗試相同的查詢時,我總是返回索引中的所有值。
因此:如何通過GET將查詢傳遞給彈性搜索服務器,以便我可以在URL中使用搜索字符串?
如果發送一個GET,那麼body可能不會被髮送到elasticsearch,所以您基本上沒有向_search
端點發送任何查詢,這就是爲什麼您會收回所有東西(當然只有前10個結果基於默認大小參數)。
查看URI request,它允許您使用URI中的q
參數發送基本查詢。您可以使用Lucene query syntax並指定鏈接頁面中列出的其他參數。如果您希望執行更高級的查詢,則可能需要將它們表示爲JSON查詢,以便獲得elasticsearch Query DSL的所有優點,但是您需要將它們作爲請求的主體提供。
UPDATE
在elasticsearch頭插件尋找更深層次的,當您選擇GET方法查詢不被髮送的請求主體,但URL本身並沒有爲參數指定名稱,如:
http://localhost:9200/_search&{"query":{"term":{"text":"john"}}}
這可能是插件本身的一個錯誤,elasticsearch找不到查詢,這就是爲什麼你會得到所有結果。這意味着只有POST方法在使用elasticsearch頭髮送查詢時才起作用。
Elasticsearch允許使用GET和POST來執行查詢。如果你使用GET您可以將查詢作爲身體或使用source參數是這樣的:在Lucene的查詢語法
http://localhost:9200/_search?source={"query":{"term":{"text":"john"}}}
說我確實將查詢發送的狀態的HTTPHeader,但不是。只是奇怪,你可以形成一個查詢,並提供GET選項,當它不工作.... – Peter
看看我更新的答案。 – javanna
tx的更新! – Peter