按照ES文件,这些2个搜索请求应该得到相同的结果:
得到
http://localhost:9200/app/users/_search?source={"query": {"term": {"email":"foo@gmail.com"}}}
POST
http://localhost:9200/app/users/_search
帖子正文:
{
"query": {
"term": {
"email":"foo@gmail.com"
}
}
}
但是第一个没有给出结果,而第二个给了我预期的结果。 我用ES版本0.19.10别的任何人都有相同的行为? 这是一个错误?
source
是不是有效的查询字符串参数根据URI搜索
Elasticsearch允许三种方式进行搜索的请求......
与要求的身体得到:
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"
你应该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