ElasticSearch Pagination&排序

时间:2013-02-13 20:12:20

标签: elasticsearch

我正在尝试按多个结果页面的日期对搜索结果进行排序。排序在每个页面中都有效,有没有办法对整个集合进行排序?

例如:如果第1页有2月13日至2月1日的项目;第二页在2月1日之后不应该有项目。

以下是我发送的请求的简短片段。我也尝试按日期排序然后_score,但这产生了更奇怪的结果(主要是排序顺序相同)。

{
  "query": {
    "from": 0,
    "size": 24
    "sort": [
      "published_on": {
        "missing": "_last",
        "ignore_unmapped": true,
        "order": "desc"
      }
    ]
    "custom_filters_score": {
      "query": {
        "bool": {
          "must": [
            {
              "match": {
                "content": "Some query"
              }
            }
          ]
          ... more ...
        }
      },
      "filters": [
        {
          "filter" => {
            "type" => {
              "value" => "cats"
            }
          },
          "boost" => 2
        }
        ... more ...
      ]
    }
  }
}

有什么想法?提前谢谢!

2 个答案:

答案 0 :(得分:13)

总之,我是个白痴。

我没有将页面索引乘以页面上的项目数。我不确定我是如何在每个页面上错过相同的内容,在一个位置上移动。

我相信这将解决我一直处理的所有其他奇怪问题。

答案 1 :(得分:7)

sort,size,from必须在根

    {
       query:{
          ...
       },
       sort:[
         ...
       ],
       from:15,
       size:5
    }

Search API - Sort