web-dev-qa-db-fra.com

Pagination et tri ElasticSearch

J'essaie de trier les résultats de recherche par date sur plusieurs pages de résultats. Le tri fonctionne sur chaque page, existe-t-il un moyen de trier l'ensemble du jeu?

Par exemple: si la page 1 contient des éléments du 13 février au 1er février; la deuxième page ne devrait pas contenir d'éléments après le 1er février.

Voici un bref extrait de la demande que j'envoie. J'ai également essayé de trier par date puis _score, mais cela a produit des résultats encore plus étranges (principalement, l'ordre de tri était le même).

{
  "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 ...
      ]
    }
  }
}

Des pensées? Merci d'avance!

15
Jake

Je ne multipliais pas l'index de la page par le nombre d'éléments sur la page. Je ne sais pas comment j'ai raté les mêmes entrées sur chaque page, remonté d'un seul endroit.

Je suis sûr que cela résoudra tous les autres problèmes étranges que j'ai traités.

16
Jake

trier, taille, à partir de doit être à la racine

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

API de recherche - Trier

7
ahiipsa