From / Size

From / Size

  可以使用from和size参数来分析结果。from参数定义与要获取的第一个结果的偏移量。size参数允许您配置要返回的最大命中数。

  虽然from和size可以设置为请求参数,但也可以在搜索体内设置。从默认值为0,并且size的默认值为10。

GET /_search
{
    "from" : 0, "size" : 10,
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}

  请注意,from+size不能超过index.max_result_window索引设置,默认值为10,000。查看Scroll或 Search After API,以获得更有效的深层滚动方式。

 

原文地址:https://www.elastic.co/guide/en/elasticsearch/reference/5.0/search-request-from-size.html

转载于:https://www.cnblogs.com/benjiming/p/7233810.html

如果利用 `from` 和 `size` 进行分页查询,可能会出现数据不一致的情况。这是因为在 Elasticsearch 中,数据是分布式存储的,而分页查询是基于分片进行的。当一个查询跨越多个分片时,由于不同分片数据的不同,可能会导致数据不一致的情况。 解决这个问题的方法是,使用 Search After API 来进行分页查询。Search After API 可以在查询结果中保留一个游标,可以在下一次查询中使用该游标来继续查询,从而确保数据一致性。 具体的做法是,在第一次查询时,使用 `sort` 参数对结果进行排序,并记录最后一条结果的排序值(可以是 `_id` 或其他字段)。在下一次查询时,使用 `search_after` 参数来指定排序值,以继续查询下一页数据。这样就可以确保每一页的数据是连续的,不会出现重复或遗漏的情况。 以下是使用 Search After API 进行分页查询的示例代码: ``` SearchRequest searchRequest = new SearchRequest("index_name"); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(QueryBuilders.matchAllQuery()); searchSourceBuilder.sort("_id", SortOrder.ASC); searchSourceBuilder.size(pageSize); if (page > 1) { // 使用 search_after 参数来指定排序值,以继续查询下一页 searchSourceBuilder.searchAfter(lastSortValues); } searchRequest.source(searchSourceBuilder); SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT); SearchHits hits = searchResponse.getHits(); if (hits.getTotalHits().value > 0) { SearchHit[] searchHits = hits.getHits(); for (SearchHit hit : searchHits) { // 处理查询结果 } // 记录最后一条结果的排序值,以供下一页查询使用 lastSortValues = searchHits[searchHits.length - 1].getSortValues(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值