ESのドキュメントによると、これら2つの検索リクエストで同じ結果が得られるはずです。
GET
http://localhost:9200/app/users/_search?source={"query": {"term": {"email":"[email protected]"}}}
POST
http://localhost:9200/app/users/_search
投稿本文:
{
"query": {
"term": {
"email":"[email protected]"
}
}
}
しかし、最初のものは結果を与えませんが、2番目のものは私に期待される結果を与えます。 ESバージョン0.19.10を使用しています他の誰かが同じ動作をしましたか?これはバグですか?
source
は、 RI Search によると有効なクエリ文字列引数ではありません
Elasticsearchでは、検索リクエストを実行する3つの方法が可能です...
リクエスト本文でGET:
curl -XGET "http://localhost:9200/app/users/_search" -d '{
"query": {
"term": {
"email": "[email protected]"
}
}
}'
リクエスト本文を使用したPOST:
すべてのクライアントがbodyでGETをサポートしているわけではないため、POSTも許可されます。
curl -XPOST "http://localhost:9200/app/users/_search" -d '{
"query": {
"term": {
"email": "[email protected]"
}
}
}'
リクエスト本文なしでGET:
curl -XGET "http://localhost:9200/app/users/_search?q=email:[email protected]"
または(クエリ文字列を手動でURLエンコードする場合)
curl -XGET "http://localhost:9200/app/users/_search?q=email%3Afoo%40gmail.com"
最初のケースでは、クエリをURLエンコードする必要があります。
http://localhost:9200/app/users/_search?source=%7b%22query%22%3a+%7b%22term%22%3a+%7b%22email%22%3a%22foo%40gmail.com%22%7d%7d%7d