ElasticSearch POST with json search body vs GET with json in url

杀马特。学长 韩版系。学妹 提交于 2019-12-03 05:26:51
Andrew Macheret

source is not a valid query string argument according to URI Search

Elasticsearch allows three ways to perform a search request...

GET with request body:

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

POST with request body:

Since not all clients support GET with body, POST is allowed as well.

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

GET without request body:

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

or (if you want to manually URL encode your query string)

curl -XGET "http://localhost:9200/app/users/_search?q=email%3Afoo%40gmail.com"

You should URL encode your query in the first case:

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
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!