Hoppa till innehåll
100% lokalt

Elasticsearch query-byggare

Omvandla en lista över fält-/operatör-/värdvillkor till en Elasticsearch bool query.

Utmatning

Elasticsearch query-byggare

Klistra in en lista med villkor och det här verktyget sätter ihop en fullständig Elasticsearch-sökbegäran: en bool query med must-, should-, must_not- och filter-grenar, plus sortering, paginering och valfri aggregering. Det passar för alla som skriver frågor manuellt för Kibana Dev Tools, en REST-klient eller ett programs söklager och hellre vill beskriva villkoren än att omskriva JSON-strukturen varje gång.

Varje villkor är en rad i fältet Villkor: en valfri gren (must, should, must_not, filter), ett fältnamn, en valfri villkorstyp (term för exakt matchning, match för fulltextsökning, range för jämförelser, exists för att kontrollera att ett fält finns) och ett värde — separerat med semikolon. "filter price range 100..500" skapar en range-klausul; "should title match wireless headphones" skapar en fulltextsökning på en fras; "must email exists" kontrollerar att fältet är inställt. Utelämna typen och Standardvillkorstyp fyller den in; utelämna grenen och Standardgren gör samma sak, så en snabb lista som "status active; category electronics" producerar ändå en giltig query.

Alternativpanelen täcker resten av en verklig sökbegäran: Sorteringsfält och -ordning lägger till en sorteringsklausul, Sidstorlek och Offset kontrollerar from/size-paginering, och Aggregering slår på en terms- eller date_histogram-hink över ett fält du väljer. Markera träffar lägger till ett highlight-block för alla match-villkor, och Query-språkversion kontrollerar track_total_hits, endast tillgängligt från Elasticsearch 7 och senare. Allt körs i din webbläsare — villkoren och query:n laddas aldrig upp.

FAQ

Hur skriver jag ett villkor?
En rad per villkor, separerat med semikolon: en valfri gren, fältnamnet, en valfri villkorstyp, sedan värdet — till exempel "must status term active; filter price range 100..500".
Vad betyder term, match, range och exists?
term matchar ett fält exakt, match söker i full text, range jämför ett fält mot gränser (skriv "min..max", "min..", "..max", eller ">=5"), och exists kontrollerar bara att fältet finns — inget värde behövs.
Vad händer om jag utelämnar grenen eller typen?
Alternativen Standardgren och Standardvillkorstyp fyller i vilken del en rad utelämnar, så en enkel rad "field value" producerar ändå ett giltigt villkor.
Fungerar query:n med varje Elasticsearch-version?
Bool query, sortering, paginering, aggregering och markering är stabila sedan Elasticsearch 6. Alternativet Query-språkversion ändrar bara en detalj: track_total_hits, som introducerades i Elasticsearch 7 och utelämnas för en 6.x query.
Laddas mina query-data upp någonstans?
Nej. Query:n skapas helt i din webbläsare från de villkor och alternativ du anger — ingenting skickas till en server.