21

Elastic Search Headプラグインを介してエラスティック検索を試しています。

POST 経由でクエリを送信すると、結果は期待どおりになります。

ただし、GET を使用して同じクエリを実行すると、常にインデックス内のすべての値が返されます。

だから:URLで検索文字列を使用できるように、GETを介してエラスティック検索サーバーにクエリを渡す方法は?

4

1 に答える 1

34

GET を送信すると、ボディはおそらく Elasticsearch に送信されないため、基本的に_searchエンドポイントにクエリを送信していないため、すべてが返されます (もちろん、デフォルトのサイズ パラメーターに基づく最初の 10 件の結果のみ)。

URI requestを見てください。これによりq、URI 内のパラメーターを使用して基本的なクエリを送信できます。Lucene クエリ構文を使用して、リンクされたページにリストされている他のパラメーターを指定できます。その後、より高度なクエリを実行する場合は、elasticsearchクエリ DSLのすべての利点を得るために、それらを JSON クエリとして表現することをお勧めしますが、それらをリクエストの本文として提供する必要があります。

更新
elasticsearch head プラグインを詳しく見てみると、GET メソッドを選択したときにクエリがリクエスト本文として送信されるのではなく、URL 自体内で次のようにパラメーターの名前を指定せずに送信されます。

http://localhost:9200/_search&{"query":{"term":{"text":"john"}}}

これはおそらくプラグイン自体のバグであり、elasticsearch がクエリを見つけることができないため、すべての結果が返されます。つまり、elasticsearch ヘッドを使用してクエリを送信している間は、POST メソッドのみが機能します。

Elasticsearch では、クエリの実行に GET と POST の両方を使用できます。GET を使用する場合は、クエリを本文として送信するか、次のように source パラメータを使用できます。

http://localhost:9200/_search?source={"query":{"term":{"text":"john"}}}
于 2012-08-30T11:29:38.560 に答える