赞
踩
可以使用from
和size
参数对结果进行分页。from
参数定义要获取的第一个结果的偏移量。size
参数允许您配置要返回的hits
最大数量。
虽然可以将from
和size
设置为请求参数,但也可以在搜索主体中设置它们。from
默认值为0,size
大小默认值为10:
GET /_search
{
"from" : 0,
"size" : 10,
"query" : {
"term" : { "user" : "kimchy" }
}
}
注意from + size
不能大于index.max_result_window
索引设置,默认为10000
。查看Scroll
或Search After
的API更有效的方式来做深滚动。
允许您在特定字段上添加一个或多个排序。每一种排序都可以反过来。排序是在每个字段级别上定义的,使用特殊的字段名_score
按分数排序,_doc
按索引顺序排序。
假设索引映射如下:
PUT /my_index { "mappings": { "_doc": { "properties": { "post_date": { "type": "date" }, "user": { "type": "keyword" }, "name": { "type": "keyword" }, "age": { "type": "integer" } } } } }
GET /my_index/_search { "sort" : [ { "post_date" : { "order" : "asc" } }, "user", { "name" : "desc" }, { "age" : "desc" }, "_score" ], "query" : { "term" : { "user" : "kimchy" } } }
_doc除了是最有效的排序顺序外,没有实际的用例。因此,如果您不关心返回文档的顺序,那么应该按_doc排序。这在滚动时尤其有用。
返回的每个文档的排序值也作为响应的一部分返回。
order
选项可以有以下值:
在_score
上排序时,顺序默认为desc
,在其他任何地方排序时,顺序默认为asc
。
Elasticsearch支持数组或多值字段排序。mode选项控制选择哪个数组值来对其所属的文档进行排序。模式选项可以有以下值:
模式 | 作用 |
---|---|
min | 选择最小的值。 |
max | 选择最高的值。 |
sum | 使用所有值的和作为排序值,仅适用于基于数字的数组字段 |
avg | 使用所有值的平均数作为排序值,仅适用于基于数字的数组字段 |
median | 使用所有值的中位数作为排序值,仅适用于基于数字的数组字段 |
在下面的示例中,字段price
对每个文档有多个价格。在这种情况下,将根据基于每个文档的平均价格的价格升序对结果命中进行排序:
PUT /my_index/_doc/1?refresh
{
"product": "chocolate",
"price": [20, 4]
}
POST /_search
{
"query" : {
"term" : { "product" : "chocolate" }
},
"sort" : [
{"price" : {"order" : "asc", "mode" : "avg"}}
]
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。