【问题标题】:ElasticSearch Pagination & SortingElasticSearch 分页和排序
【发布时间】:2019-09-18 21:38:46
【问题描述】:

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

例如:如果第 1 页包含从 2 月 13 日到 2 月 1 日的商品;第二页不应包含 2 月 1 日之后的项目。

这是我发送的请求的简短 sn-p。我也尝试过按日期排序,然后按 _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 ...
      ]
    }
  }
}

有什么想法吗?提前致谢!

【问题讨论】:

  • 应该是日期,然后是_score。请考虑在问题中包含您的“奇怪”结果。或许有人能够解释为什么他们如此奇怪。
  • 正如我在问题中所说,我尝试按日期排序,然后按 _score。我今天会尝试提出一些结果。
  • 抱歉,我没有仔细阅读您的评论,无法理解您在说什么。截至目前,_sort 还没有到位,我仍然看到相同的结果。
  • publish_on 是如何编入索引的?

标签: elasticsearch


【解决方案1】:

我没有将页面索引乘以页面上的项目数。我不知道我是如何在每一页上错过了相同的整体,向上移动了一个位置。

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

【讨论】:

  • :-) 我敢肯定,我们都遇到过类似的情况。
【解决方案2】:

排序,大小,从必须在根中

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

Search API - Sort

【讨论】:

猜你喜欢
  • 2012-04-05
  • 2017-10-05
  • 2017-02-04
  • 1970-01-01
  • 2019-12-02
  • 1970-01-01
  • 2018-02-14
  • 2011-07-15
  • 2012-08-23
相关资源
最近更新 更多