16

ES のドキュメントによると、これら 2 つの検索要求は同じ結果を取得する必要があります。

得る

http://localhost:9200/app/users/_search?source={"query": {"term": {"email":"foo@gmail.com"}}}

役職

http://localhost:9200/app/users/_search

投稿本文:

{
    "query":  {
         "term": {
               "email":"foo@gmail.com"
          }
    }
}

しかし、最初のものでは結果が得られませんが、2番目のものでは期待される結果が得られます。私は ES バージョン 0.19.10 を使用しています。他の誰かが同じ動作をしましたか? これはバグですか?

4

3 に答える 3

32

sourceURI 検索によると、有効なクエリ文字列引数ではありません

Elasticsearch では、3 つの方法で検索リクエストを実行できます...

リクエスト本文でGET:

curl -XGET "http://localhost:9200/app/users/_search" -d '{
  "query": {
    "term": {
      "email": "foo@gmail.com"
    }
  }
}'

リクエスト本文を含む POST:

すべてのクライアントが本文付きの GET をサポートしているわけではないため、POST も許可されます。

curl -XPOST "http://localhost:9200/app/users/_search" -d '{
  "query": {
    "term": {
      "email": "foo@gmail.com"
    }
  }
}'

リクエスト本文なしのGET:

curl -XGET "http://localhost:9200/app/users/_search?q=email:foo@gmail.com"

または (クエリ文字列を手動で URL エンコードする場合)

curl -XGET "http://localhost:9200/app/users/_search?q=email%3Afoo%40gmail.com"
于 2013-08-20T20:58:22.253 に答える
2

最初のケースでは、クエリを 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
于 2013-01-15T14:25:49.400 に答える