弾性検索ヘッドプラグインを使用して弾性検索を試しています。弾性検索でGET/POSTを使用した場合の結果が異なる
私はPOST経由でクエリを送信すると、結果は期待通りです。
しかし、GETを使用して同じクエリを試すと、インデックス内のすべての値が返されます。
So:URLに検索文字列を使用できるように、GET経由でエラスティック検索サーバーにクエリを渡す方法はありますか?
弾性検索ヘッドプラグインを使用して弾性検索を試しています。弾性検索でGET/POSTを使用した場合の結果が異なる
私はPOST経由でクエリを送信すると、結果は期待通りです。
しかし、GETを使用して同じクエリを試すと、インデックス内のすべての値が返されます。
So:URLに検索文字列を使用できるように、GET経由でエラスティック検索サーバーにクエリを渡す方法はありますか?
GETを送信した場合、身体はelasticsearchに送信されていない可能性もありますので、基本的には_search
エンドポイントにクエリを送信しないため、すべてを元に戻します(もちろん、デフォルトサイズパラメータ)。
URI requestを見ると、URI内のq
パラメータを使用して基本クエリを送信できます。 Lucene query syntaxを使用し、リンクされたページにリストされている他のパラメータを指定することができます。より高度なクエリを実行したい場合は、elasticsearch Query DSLのすべての利点を得るためにそれらをJSONクエリとして表現したいかもしれませんが、要求の本体としてそれらを提供する必要があります。 elasticsearchヘッドプラグインでより深く見て
UPDATE
は、クエリがGETメソッドを選択すると、リクエストのボディとして送信されていないが、URL自体の中でこのように、パラメータの名前を指定せず:
http://localhost:9200/_search&{"query":{"term":{"text":"john"}}}
これはおそらくプラグイン自体のバグで、elasticsearchはクエリを見つけることができません。そのため、すべての結果を戻すのです。これは、elasticsearchヘッドでクエリを送信しているときにPOSTメソッドだけが動作することを意味します。
Elasticsearchでは、クエリの実行にGETとPOSTの両方を使用できます。 GETを使用すると、クエリを本文として送信するか、次のようにソースパラメータを使用することができます。
http://localhost:9200/_search?source={"query":{"term":{"text":"john"}}}
httpheaderは、私が実際にクエリを送信しているが、Luceneクエリ構文ではないことを示しています。ちょうど奇妙なことに、あなたがクエリーを形作ることができ、それが機能していないときに、GETオプションが提示されます。 – Peter
私の更新された答えを見てください。アップデートのために – javanna
tx! – Peter