【问题标题】:The range when excuteing From / Size in elasticsearchelasticsearch中执行From / Size时的范围
【发布时间】:2016-09-08 02:58:10
【问题描述】:

当我在 elasticsearch 中阅读 From / Size 的理论时。

https://www.elastic.co/guide/en/elasticsearch/reference/1.7/search-request-from-size.html

问题是如何确定搜索范围。例如,如果我生成 1.000 条记录,那么我将其查询为下面的 sn-ps:

{
    "from" : 100, "size" : 10,
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}

它会在记录 100 到 1.000 的范围内搜索,然后返回 10 个结果吗?或者它会自动生成合适的范围并返回 10 个结果? 谁能帮我解决这个问题?最好的尊重。

【问题讨论】:

    标签: java elasticsearch full-text-search


    【解决方案1】:

    因此,elasticsearch 将我们的索引拆分为更小的部分,称为“分片”,因此如果您有一个包含 5 个分片和 1000 个文档的索引,每个分片将被分配 200 个文档。现在,当您执行搜索查询时,elasticsearch 将搜索所有分片并创建一个按每个分片中分数降序排序的结果列表。

    现在如果我们想要前 10 个结果(来自:0,大小:10),elasticsearch 会从每个 shard 获取前 10 个结果,即总共 50 个结果(假设每个 shard 有超过 10 个命中),然后排序并返回前 10 个结果,并丢弃其余 40 个结果。

    现在,如果您想要从 100 到 110(从:100,大小:10)的结果,elasticsearch 将请求每个分片的前 110 个结果,即。共有 550 个结果。现在将再次对这 550 个结果进行排序以获得前 110 个结果,其余 440 个结果将被丢弃。

    现在在这 110 个结果中,数字 1-99 将被丢弃,结果数字 100-110 将作为搜索查询的结果返回。

    【讨论】:

    • 在您的回答中“现在,如果您想要从 100 到 110(从:100,大小:10)的结果,elasticsearch 将请求每个分片的前 110 个结果,即总共 550 个结果“ 有问题。我认为 elasticsearch 将请求前 10 个结果,因为您配置了 size:10。从所有分片中收集的结果总共只有 50 个
    • 嗯,这是不正确的。看看这个:elastic.co/guide/en/elasticsearch/guide/current/pagination.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    • 2012-02-10
    • 2019-09-12
    相关资源
    最近更新 更多