我可以在分页后使用 search_after 模仿 OpenSearch 中的 tie_breaker_field 吗?

问题描述 投票:0回答:0

我按日期时间排序并有循环值。

#1 "2023-01-03 19:57:38"
#2 "2023-01-03 19:57:38"
...
#3 "2023-01-03 19:57:39"
#4 "2023-01-03 19:57:39"
...

这会在使用

search_after
参数分页时泄漏文档。根据上面的数据集,假设前 10K 文档以#1 值结尾,因此接下来的 10K 将以#3 开头。 #2因此错过了。

在自己搜索这个Official OpenSearch pageGitHub上的问题和其他互联网资源后,我没有找到任何解决方案,甚至没有找到任何解决方案。如果我使用一些独特的字段作为 2d 排序参数,它可以部分帮助,但会使响应数据排序非常复杂(

id
字段已尝试)。 我期望干净的结果是使用像
tie_breaker_field
这样的东西,比如 ElasticSearch 引擎提供的。它与
pit_id
相关联,并且对于当前
pit_id
数据集具有唯一值。 如果在 OpenSearch 中没有执行此操作的基本方法,是否可以生成一些独特的值来模仿
tie_breaker_field
将其绑定到
pit_id

下面是我使用的请求体原型:

<CURLOPT_POSTFIELDS> = [
    "size" => <int>,
    "from" => <int>,
    "pit" => [
        "id" => <pit_id>
    ],
    "query" => [...],
    "sort" => [
        'update_at' => 'asc'
    ],
];
lucene search-engine opensearch
© www.soinside.com 2019 - 2024. All rights reserved.