La syntaxe des chaînes de requête permet de filtrer les données et de simplifier la logique conditionnelle dans le DSL SLS.
Référence rapide
Fonctions prises en charge :
|
Type |
Fonction |
Scénario |
|
Fonction de vérification d'événement |
Vérifie si les valeurs des champs d'événement répondent à des conditions spécifiques. |
|
|
Fonction de ressource |
Extrait des données tabulaires d'un Logstore. Prend en charge les listes d'autorisation et de blocage basées sur des chaînes de requête pour le filtrage. |
|
|
Extrait des données tabulaires depuis RDS MySQL. Prend en charge les listes d'autorisation et de blocage basées sur des chaînes de requête pour le filtrage. |
Recherche par champ contre recherche en texte intégral
Comparaison des fonctionnalités :
|
Fonctionnalité |
Recherche par champ |
Recherche en texte intégral |
|
Recherche de sous-chaîne |
Prise en charge |
Prise en charge |
|
Recherche avec caractères génériques à l'aide de |
Prise en charge |
Prise en charge |
|
Recherche de correspondance exacte |
Prise en charge |
Non prise en charge |
|
Recherche par expression régulière |
Prise en charge |
Non prise en charge |
|
Recherche de plage numérique |
Prise en charge |
Non prise en charge |
|
Comparaison numérique |
Prise en charge |
Non prise en charge |
|
Opérateurs logiques : and, or, not et combinaisons |
Prise en charge |
Prise en charge |
Échappement des caractères
Échappez les caractères spéciaux dans les chaînes de requête, tels que les astérisques (*) et les barres obliques inverses (\).
-
Échappement du nom de champ
N'entourez pas les noms de champs de guillemets doubles. Échappez les caractères spéciaux avec une barre oblique inverse (\) :
\*\(1+1\)\?: abc: Caractères spéciaux échappés par une barre oblique inverse.__tag__\:__container_name__: abc: Deux-points échappés par une barre oblique inverse.chinese_field: abc: Les caractères chinois ne nécessitent aucun échappement."content": abc: Non valide. N'entourez pas les noms de champs de guillemets doubles.
-
Échappement de la valeur de recherche
-
Échappez les guillemets doubles et les barres obliques inverses au sein des valeurs à l'aide d'une barre oblique inverse (\). Exemple :
content: "abc\"xy\\z".RemarqueUtilisez des guillemets simples pour la chaîne externe et des guillemets doubles pour la valeur de recherche interne.
e_search("domain: '/url/test.jsp'")est incorrect. Le format correct este_search('domain: "/url/test.jsp"'). Échappez les astérisques (*) et les points d'interrogation (?) avec une barre oblique inverse (\) pour empêcher la correspondance avec des caractères génériques.
-
Les chaînes contenant uniquement des caractères chinois, des lettres, des chiffres, des traits de soulignement (_), des traits d'union (-), des astérisques (*) ou des points d'interrogation (?) ne nécessitent pas de guillemets doubles. Dans le cas contraire, entourez la chaîne de guillemets doubles :
status: "\*\?()[]:=": Entouré de guillemets doubles. Seuls l'astérisque (*) et le point d'interrogation (?) nécessitent un échappement par barre oblique inverse.content: ()[]:=: Non valide. Doit être entouré de guillemets doubles.status: active\*testetstatus: active\?test: Seul le caractère générique doit être échappé. Aucun guillemet double n'est requis.
-
Recherche de sous-chaîne
-
Recherche en texte intégral
Recherchez une sous-chaîne dans tous les champs.
-
Syntaxe
e_search('substring') -
Exemples
e_search('"error"'): Recherche de sous-chaîne.e_search('"active error"'): Recherche de sous-chaîne avec un espace dans le terme.e_search('active error'): Plusieurs sous-chaînes combinées avec OR par défaut.
-
-
Recherche par champ
Recherchez une sous-chaîne dans un champ spécifique.
-
Syntaxe
e_search('...') -
Exemples
e_search('status: active'): Recherche de sous-chaîne.e_search('author: "john smith"'): Recherche de sous-chaîne avec un espace dans la valeur.
Remarquee_search('field: active error')équivaut àfield:active OR "error". Cette opération rechercheactivedans le champ field ou effectue une recherche en texte intégral pourerror.
-
Recherche avec caractères génériques
L'astérisque (*) correspond à zéro ou plusieurs caractères. Le point d'interrogation (?) correspond à exactement un caractère, y compris les caractères multioctets tels que les caractères chinois.
-
Recherche en texte intégral
Recherche une sous-chaîne dans tous les champs.
-
Syntaxe
e_search('substring') -
Exemples
e_search('active*test'): Correspond à zéro ou plusieurs caractères entre « active » et « test ».e_search('occurs*error'): Correspond àoccurs error,occurs critical erroret à des motifs similaires.e_search('active?good'): Correspond à exactement un caractère entre « active » et « good ».e_search('ac*tive?good'): Combine les deux caractères génériques.e_search('ac*tive??go*od'): Utilise plusieurs caractères génériques dans une seule requête.
-
-
Recherche par champ
Recherche une sous-chaîne dans un champ spécifique.
-
Syntaxe
e_search('field_name:substring') -
Exemples
e_search('status: active*test'): Correspond à zéro ou plusieurs caractères.e_search('status: active?good'): Correspond à un seul caractère.
-
Correspondance exacte
La correspondance exacte exige que la valeur entière du champ corresponde du début à la fin.
-
Syntaxe
e_search('field_name==exact_match_string') -
Exemples
e_search('author== "john smith"'): Le champ author correspond exactement à john smith.e_search('status== ac*tive?good'): Combinaison avec des caractères génériques.
Correspondance par expression régulière
Les expressions régulières permettent une mise en correspondance de motifs plus puissante que les caractères génériques.
-
Syntaxe
e_search('field_name~=regular_expression_string')RemarqueUtilisez le préfixe
rpour empêcher l'échappement des barres obliques inverses dans les expressions régulières.Effectue une correspondance partielle par défaut. Ajoutez
^au début et$à la fin pour une correspondance complète.
-
Exemples
e_search('status~= "\d+"'): Le champ status contient des chiffres.e_search('status~= "^\d+$"'): Le champ status est un nombre.
Comparaison numérique
Compare les valeurs des champs numériquement.
-
Comparaison numérique directe
Utilisez les opérateurs
>,>=,=,<et<=pour la comparaison.e_search('age >= 18') # >=18 e_search('age > 18') # > 18 e_search('age = 18') # = 18 e_search('age <= 18') # <=18 e_search('age < 18') # < 18 -
Comparaison de plage numérique
Utilisez des intervalles fermés. Un astérisque (*) indique un côté non borné.
e_search('count: [100, 200]') # >=100 and <=200 e_search('count: [*, 200]') # <=200 e_search('count: [200, *]') # >=200
Opérateurs logiques
Combinez les recherches avec des opérateurs logiques. Utilisez des parenthèses () pour regrouper les conditions.
|
Opérateur |
Mot-clé |
|
AND |
|
|
OR |
|
|
NOT |
|
Exemples :
e_search('abc OR xyz') # Logical operators are case-insensitive
e_search('abc and (xyz or zzz)')
e_search('abc and not (xyz and not zzz)')
e_search('abc && xyz') # and
e_search('abc || xyz') # or
e_search('abc || !xyz') # or not
Opérateurs logiques dans la correspondance de sous-chaînes au niveau des champs :
e_search('field: (abc OR xyz)') # The field contains abc or xyz
e_search('field: (abc OR not xyz)') # The field contains abc or does not contain xyz
e_search('field: (abc && !xyz)') # The field contains abc and does not contain xyz
Évaluation des champs
Vérifie si un champ existe ou remplit des conditions spécifiques.
e_search('field: *'): Le champ existe.e_search('not field:*'): Le champ n'existe pas.e_search('not field:""'): Le champ n'existe pas.e_search('field: "?"'): Le champ existe et sa valeur n'est pas vide.e_search('field==""'): Le champ existe et sa valeur est vide.e_search('field~=".+"'): Le champ existe et sa valeur n'est pas vide.e_search('not field~=".+"'): Le champ n'existe pas ou sa valeur est vide.e_search('not field==""'): Le champ n'existe pas ou sa valeur n'est pas vide.