Zum Inhalt springen
100% lokal

Elasticsearch-Abfrage-Builder

Konvertieren Sie eine Liste von Feld-/Operator-/Wert-Bedingungen in eine Elasticsearch-Bool-Abfrage.

Ausgabe

Elasticsearch-Abfrage-Builder

Fügen Sie eine Liste von Bedingungen ein und dieses Tool erstellt eine vollständige Elasticsearch-Suchanfrage: eine Bool-Abfrage mit must-, should-, must_not- und filter-Branches, plus Sortierung, Pagination und optionale Aggregation. Es eignet sich für jeden, der Abfragen von Hand für Kibana Dev Tools, einen REST-Client oder die Such-Ebene einer Anwendung schreibt und lieber die Bedingungen beschreibt, als jedes Mal das JSON-Gerüst neu zu tippen.

Jede Bedingung ist eine Zeile im Feld Bedingungen: ein optionaler Branch (must, should, must_not, filter), ein Feldname, ein optionaler Bedingungstyp (term für exakte Übereinstimmung, match für Volltextsuche, range für Vergleiche, exists um zu prüfen, ob das Feld vorhanden ist) und ein Wert — getrennt durch Semikola. "filter price range 100..500" erzeugt eine range-Klausel; "should title match wireless headphones" erzeugt eine Volltextübereinstimmung auf einen Ausdruck; "must email exists" prüft, ob das Feld gesetzt ist. Lassen Sie den Typ weg und der Standard-Bedingungstyp füllt ihn aus; lassen Sie den Branch weg und der Standard-Branch tut dasselbe, daher produziert eine schnelle Liste wie "status active; category electronics" immer noch eine gültige Abfrage.

Das Optionsfenster behandelt den Rest einer echten Suchanfrage: Sortierfeld und -reihenfolge fügen eine Sortierklausel hinzu, Seitengröße und Offset steuern from/size-Pagination, und Aggregation aktiviert einen terms- oder date_histogram-Bucket über ein Feld Ihrer Wahl. Treffer hervorheben fügt einen highlight-Block für alle match-Bedingungen hinzu, und Query-Sprachversion verfolgt track_total_hits, verfügbar nur ab Elasticsearch 7 aufwärts. Alles läuft in Ihrem Browser — die eingegebenen Bedingungen und die resultierende Abfrage werden niemals hochgeladen.

Häufige Fragen

Wie schreibe ich eine Bedingung?
Eine Zeile pro Bedingung, getrennt durch Semikola: ein optionaler Branch, der Feldname, ein optionaler Bedingungstyp, dann der Wert — zum Beispiel "must status term active; filter price range 100..500".
Was bedeuten term, match, range und exists?
term findet ein Feld genau, match durchsucht Volltext, range vergleicht ein Feld gegen Grenzen (schreiben Sie "min..max", "min..", "..max" oder ">=5"), und exists prüft nur, ob das Feld vorhanden ist — kein Wert erforderlich.
Was passiert, wenn ich den Branch oder den Typ weglasse?
Die Optionen Standard-Branch und Standard-Bedingungstyp füllen den Teil aus, den eine Zeile weglässt, daher erzeugt eine einfache Zeile "field value" immer noch eine gültige Bedingung.
Funktioniert die Abfrage mit jeder Elasticsearch-Version?
Die Bool-Abfrage, Sortierung, Pagination, Aggregationen und Hervorhebung sind seit Elasticsearch 6 stabil. Die Option Query-Sprachversion ändert nur ein Detail: track_total_hits, das in Elasticsearch 7 eingeführt wurde und in einer 6.x-Abfrage weggelassen wird.
Werden meine Abfragedaten irgendwo hochgeladen?
Nein. Die Abfrage wird vollständig in Ihrem Browser aus den Bedingungen und Optionen erstellt, die Sie eingeben — es wird nichts an einen Server gesendet.