2012-08-30 5 views
16

弾性検索ヘッドプラグインを使用して弾性検索を試しています。弾性検索でGET/POSTを使用した場合の結果が異なる

私はPOST経由でクエリを送信すると、結果は期待通りです。

しかし、GETを使用して同じクエリを試すと、インデックス内のすべての値が返されます。

So:URLに検索文字列を使用できるように、GET経由でエラスティック検索サーバーにクエリを渡す方法はありますか?

答えて

27

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"}}} 
+0

httpheaderは、私が実際にクエリを送信しているが、Luceneクエリ構文ではないことを示しています。ちょうど奇妙なことに、あなたがクエリーを形作ることができ、それが機能していないときに、GETオプションが提示されます。 – Peter

+0

私の更新された答えを見てください。アップデートのために – javanna

+0

tx! – Peter

関連する問題