Elasticsearch查询、过滤与排序全解析
1. GET请求带请求体
某些语言(如JavaScript)的HTTP库不允许GET请求带有请求体,实际上,一些用户对GET请求可以有请求体感到惊讶。RFC 7231并未定义带请求体的GET请求会怎样,所以有些HTTP服务器允许,有些(尤其是缓存代理)则不允许。
Elasticsearch的开发者倾向于使用GET进行搜索请求,因为他们觉得GET比POST更能描述“检索信息”这一动作。但由于带请求体的GET并非被普遍支持,搜索API也接受POST请求,例如:
POST /_search
{
"from": 30,
"size": 10
}
这个规则适用于任何需要请求体的GET API。
2. 查询DSL
查询DSL是Elasticsearch使用的一种灵活、富有表现力的搜索语言,它通过简单的JSON接口展现了Lucene的大部分强大功能。在生产环境中编写查询时应使用它,它能让查询更灵活、精确、易读且易于调试。
使用查询DSL时,在 query 参数中传递查询,示例:
GET /_search
{
"query": YOUR_QUERY_HERE
}
空搜索 {} 在功能上等同于使用 match_all 查询子句,它会匹配所有文档:
超级会员免费看
订阅专栏 解锁全文
2393

被折叠的 条评论
为什么被折叠?



