ElasticSearch折叠不适用于具有单个排序字段和PIT的search_after

56lgkhnf  于 2022-11-02  发布在  ElasticSearch
关注(0)|答案(1)|浏览(350)

我有一个最初返回结果的弹性查询。当我再次尝试使用search_after进行分页查询时,我得到了错误:Cannot use [collapse] in conjunction with [search_after] unless the search is sorted on the same field. Multiple sort fields are not allowed。就我所知,我只使用了一个字段per_id进行排序和折叠。我的查询结构是否不正确,或者我需要执行其他操作才能运行此查询?

GET /_search
{
    "query": {
        "bool": {
            "must": [{
                "term": {
                    "pform": "iphone"
                }
            }]
        }
    },
    "collapse": {
        "field": "per_id"
    },
    "pit": {
        "id": "g-ABCDDEFG12345678ABCDDEFG12345678==",
        "keep_alive": "5m"
    },
    "sort": [ 
      {"per_id": "asc"}
    ],
    "search_after" : [
      "ABCDDEFG12345678",
      123456
    ]
}
gab6jxml

gab6jxml1#

我需要在search_after中排除tiebreaker。它不应该导致重复,因为我使用了PIT并对collapse字段进行排序,这意味着我的结果集中不应该存在重复。

"search_after" : [
  "ABCDDEFG12345678"
]

因此,我需要删除从上一个结果返回的抢七,然后再将其传递到下一个结果

相关问题