lima-city: Webhosting, Domains und Cloud
3 Pluspunkte 0 Minuspunkte

Ich habe Millionen von Datensätzen in einem Elasticsearch Index. Egal wie groß ich die size mache, ich sehe immer nur die ersten 10000 Ergebnisse. Ich habe gelesen das diese Limitierung fest in Elasticsearch verankert ist. Aber wie kann ich den Rest anzeigen?

{
  "size": 10000, 
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "data.win.eventdata.authenticationPackageName": "NTLM"
          }
        },
        {
          "match": {
            "data.win.system.eventID": "4624"
          }
        },
        {
          "match": {
            "data.win.eventdata.logonType": "3"
          }
        }
      ]
    }
  }
}
von  

1 Antwort

2 Pluspunkte 0 Minuspunkte

Paging in Elasticsearch kannst du mit einem "search_after" Query oder Scrolling. Die Scroll-API ist älter aber einfacher. Angenommen das ist der Query

GET /wazuh-alerts*/_search
{
  "query": {
    "match_all": { }
  }
}

Das Ergebnis sieht in etwa so aus:

{
  "took" : 13,
  "timed_out" : false,
  "_shards" : {
    "total" : 30,
    "successful" : 30,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 10000,
      "relation" : "gte"
    },
    "max_score" : 1.0,
    "hits" : [
      {
        [...]
      }
    ]
  }
}

Um die Scroll-API zu aktivieren hänge den GET Parameter "scroll" an die URL an.

GET /wazuh-alerts-4.x-2025*/_search?scroll=1m
{
  "query": {
    "match_all": { }
  }
}

Das Schema des Ergebnis verändert sich dabei leicht.

{
  "_scroll_id": "FGluY2x1ZGVfY29ud[...]QwaHY4dzlFdw==",
  "took" : 13,
  "timed_out" : false,
  "_shards" : {
    "total" : 30,
    "successful" : 30,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 10000,
      "relation" : "gte"
    },
    "max_score" : 1.0,
    "hits" : [
      {
        [...]
      }
    ]
  }
}

Diese zusätzliche Scroll-ID am Beginn des Ergebnis kannst du jetzt verwenden, um in den Ergebnissen zu "blättern".

POST _search/scroll
{
  "scroll": "1m",
  "scroll_id": "FGluY2x1ZGVfY29ud[...]QwaHY4dzlFdw=="
}

Jeder zusätzliche Query, der mit dieser Scroll-ID abgesendet wird liefert somit die nächsten Ergebnisse für diese spezielle Abfrage und gleichzeitig eine neue Scroll-ID.

von (716 Punkte)  
Diese Community basiert auf dem Prinzip der Selbstregulierung. Beiträge werden von Nutzern erstellt, bewertet und verbessert – ganz ohne zentrale Moderation.

Wer hilfreiche Fragen stellt oder gute Antworten gibt, sammelt Punkte. Mit steigender Punktzahl erhalten Mitglieder automatisch mehr Rechte, zum Beispiel

  • Kommentare verfassen
  • Beiträge bewerten
  • Inhalte bearbeiten
  • Inhalte ausblenden

So entsteht eine Plattform, auf der sich Qualität durchsetzt – getragen von einer engagierten Gemeinschaft. Unser Ziel: Guter Inhalt. Für alle.

2.3k Fragen

2.8k Antworten

260 Kommentare

12 Nutzer