Die Suche ist ein leistungsstarkes Werkzeug, das häufig nützlich ist, wenn Aufgaben
automatisiert werden. Jeder Endpunkt in der API bietet Operationen zum Durchsuchen
von Ressourcen. Zum Beispiel können Sie die Suche nach Computern-Operation des
/api/computers-Endpunkts verwenden, um nach Computern zu suchen.Um eine Suchoperation zu verwenden, stellen Sie ein Suchfilterobjekt bereit, das ein
oder mehrere Suchkriterien enthält. Ein Suchkriterienobjekt umfasst Eigenschaften
zur Konfiguration der folgenden Suchtypen:
- Boolean: Suche nach booleschen Werten.
- Choice: Suchfelder, die einen definierten Satz gültiger Werte haben
- ID: Eindeutige IDs suchen
- Null: Suche nach Nullwerten
- Numeric: Suche nach numerischen Werten
- String: Suche nach Zeichenfolgen
- Datumsbereich: Suche nach Datumswerten
Suchvorgänge, die mehrere Kriterien verwenden, liefern Ergebnisse, die alle Kriterien
erfüllen.
TippWie in Hinweise zu Ressourcen-Eigenschaftswerten erwähnt, verwenden Sie bei direkter Nutzung der API 0, um einen Nullwert darzustellen.
Um jedoch nach einem Nullwert zu suchen, verwenden Sie eine Nullsuche. Sie führen
keine numerische Suche nach 0 durch.
|
Die Suchkriterien umfassen die folgenden Elemente:
- Der Name des Feldes (die Eigenschaft der Ressource), nach dem Sie suchen – beachten Sie, dass Feldnamen groß- und kleinschreibungssensitiv sind
- Ein Wert zum Suchen (oder, bei Datumswerten, ein Datumsbereich)
- Ein Operator zum Testen von Feldwerten (dies gilt nicht für Datumswert-Suchen)
- Die maximale Anzahl der zurückzugebenden Elemente (Standard ist 5000)
TippBeim Durchführen einer ID-Suche geben Sie den Namen des Feldes nicht an, da angenommen
wird, dass es sich um das ID-Feld handelt.
|
Der Typ des Werts, nach dem Sie suchen, bestimmt die verfügbaren Operatoren.
|
Typ
|
Operatoren
|
|
Boolesch
|
wahr (Standard) falsch
|
|
Auswahl (für Felder, die eine festgelegte Menge gültiger Werte haben)
|
gleich (Standard) ungleich
|
|
Datum
|
Datumsbezogene Suchvorgänge verwenden Datumsbereiche und Sie verwenden nicht explizit
Operatoren.
|
|
ID (für eindeutige IDs)
|
gleich (Standard) größer-als größer-gleich kleiner-als kleiner-gleich ungleich
|
|
Null
|
wahr (Standard; wahr bedeutet null) falsch
|
|
Numerisch
|
gleich (Standard) größer-als größer-gleich kleiner-als kleiner-gleich ungleich
|
|
Zeichenfolge
|
gleich ungleich
|
Das folgende Beispiel führt eine einfache Suche nach Richtliniennamen durch.
# Set search criteria search_criteria = api.SearchCriteria() search_criteria.field_name = "name" search_criteria.string_test = "equal" search_criteria.string_value = name # Create a search filter search_filter = api.SearchFilter(None, [search_criteria]) search_filter.max_items = 1 # Perform the search policies_api = api.PoliciesApi(api.ApiClient(configuration)) policies_api.search_policies(api_version, search_filter=search_filter)
Das folgende Beispiel zeigt, wie ein Suchfilter erstellt wird, der mehrere Kriterien
enthält.
# Set search criteria for platform policy_criteria = api.SearchCriteria() policy_criteria.field_name = "policyID" policy_criteria.numeric_test = "equal" policy_criteria.numeric_value = policy_id # Set search criteria for relay relay_criteria = api.SearchCriteria() relay_criteria.field_name = "relayListID" relay_criteria.numeric_test = "equal" relay_criteria.numeric_value = relay_list_id # Create the search filter search_filter = api.SearchFilter(None, [policy_criteria, relay_criteria])
Weitere Informationen zur Authentifizierung von API-Aufrufen finden Sie unter Authentifizieren mit Server- und Workload Protection.
Durchsuchbare Felder
Die API-Referenz gibt an, welche Felder einer Ressource durchsuchbar sind. Sie finden die Informationen
zu den Feldern in den Antwortobjekten für die Vorgänge.
- Klicken Sie auf eine Operation, die den Typ der Ressource zurückgibt, nach der Sie
suchen. Zum Beispiel gibt die
Describe a Computer-Operation eine Computer-Ressource zurück. - Klicken Sie im Abschnitt Antworten auf 200 successful operation.
- Lesen Sie die Beschreibung des Feldes. Die Beschreibungen der durchsuchbaren Felder enthalten "Durchsuchbar als Datentyp", wobei Datentyp String, Numerisch, ID, Datum, Boolean und Auswahl sein kann.
Feldnamen sind case-sensitiv.
Die folgenden Felder sind nicht durchsuchbar:
- Das
locale-Feld eines Objekts - Die meisten Felder, die ein Objekt als Wert haben, wie das
policySettings-Feld einesPolicy-Objekts (siehe unten "Computer-Teilobjekte durchsuchen" für Ausnahmen).
Wenn Sie ein Feld durchsuchen, das nicht durchsuchbar ist, erhalten Sie einen Fehler
ähnlich wie
Invalid SearchFilter: unknown fieldName: platform.Computer-Teilobjekte durchsuchen
Obwohl Felder, die ein Objekt als Wert haben, im Allgemeinen nicht durchsuchbar sind,
gibt es mehrere Ausnahmen in der Computerklasse. Zum Beispiel ist der Wert des
ec2VirtualMachineSummary-Feldes ein Objekt, und mehrere Felder dieses Objekts sind durchsuchbar, wie accountID und das availabilityZone. Ebenso können Sie das name-Feld des Computers interfaces durchsuchen. (Siehe das Antwortschema für die Beschreibung eines Computers-Operation in der API-Referenz für weitere durchsuchbare Unterobjekte.) Das folgende JSON zeigt diese Unterobjekte
in der Datenstruktur des Computerobjekts:{
"hostName": "gui2-336",
"displayName": "",
"description": "",
...
"interfaces": {
"name": "ethernet",
...
},
"ec2VirtualMachineSummary": {
"accountID": "123456789012",
"availabilityZone": "ap-northeast-1",
...
},
...
"ID": 201
}
Im Suchkriterium wird der Feldname eines Unterobjekts als Pfad ausgedrückt, zum Beispiel
ec2VirtualMachineSummary/publicIPAddress und interfaces/name.
TippVerwenden Sie den
expand-Parameter bei der Suche, um nur die Informationen einzuschließen, die Sie in den
zurückgegebenen Computerobjekten benötigen. Weitere Informationen finden Sie unter
"Minimieren der Computerantwortgröße" im Leitfaden für Leistungstipps. |
Wenn Sie nach einem Computer-Teilobjekt suchen, wird das Teilobjekt automatisch in
den zurückgegebenen
Computer-Objekten eingeschlossen, außer wenn expand auf none gesetzt ist (keine Teilobjekte werden zurückgegeben). Wenn Sie beispielsweise nach
der EC2-Konto-ID suchen und expand auf tasks gesetzt ist, enthalten die zurückgegebenen Computer-Objekte die tasks- und ec2VirtualMachineSummary-Eigenschaften. Wenn expand auf ec2VirtualMachineSummary gesetzt ist, enthalten die zurückgegebenen Computer-Objekte die ec2VirtualMachineSummary-Eigenschaft.# Search criteria computer_criteria = api.SearchCriteria() computer_criteria.field_name = "ec2VirtualMachineSummary/accountID" computer_criteria.string_test = "equal" computer_criteria.string_value = account_id # Search filter max_items = None search_filter = api.SearchFilter(max_items, computer_criteria) # Include only the EC2 virtual machine summary in the returned computers expand = api.Expand(api.Expand.ec2_virtual_machine_summary) # Perform the search computers_api = api.ComputersApi(api.ApiClient(configuration)) return computers_api.search_computers(api_version, search_filter=search_filter, expand=expand.list(), overrides=False)
Feldnamen im Python-Code
Wenn Sie die Python-Clientbibliotheken verwenden, stellen Sie sicher, dass Sie den
korrekten Feldnamen in Ihren Suchanfragen verwenden. Einige Feldnamen bestehen aus
mehreren zusammengefügten Wörtern und verwenden Camel-Case-Schreibweise, wie die
lastUpdated-Eigenschaft der Regeln zum Eindringschutz. Die entsprechende Python-Eigenschaft verwendet
ein Unterstrich-Zeichen (_) zur Trennung der zusammengefügten Wörter anstelle der
Camel-Case-Schreibweise, zum Beispiel last_updated. Wenn Sie nach einem Feld suchen, müssen Sie den Feldnamen angeben, nach dem Sie
suchen (lastUpdated) und nicht die Klassen-Eigenschaft (last_updated).Wenn Sie einen falschen Feldnamen verwenden, erhalten Sie eine Fehlermeldung mit der
Nachricht
Invalid SearchFilter: unknown fieldName.Verwenden Sie den folgenden Algorithmus, um Python-Klasseneigenschaften in Feldnamen
zu übersetzen, wenn der Name der Eigenschaft ein oder mehrere Unterstrich-Zeichen
(_) enthält:
- Schreiben Sie den Buchstaben groß, der direkt nach jedem Unterstrich folgt.
- Jeden Unterstrich löschen.
Verwenden Sie Platzhalter bei der Zeichenfolgensuche
Zeichenfolgensuchen unterstützen die Verwendung von zwei Platzhaltern in Zeichenfolgenwerten:
%: Steht für null oder mehr Zeichen_; Entspricht 1 Zeichen
Beispielsweise stimmt der Zeichenfolgenwert
%Security mit Server- und Workload Protection überein, und er stimmt auch mit Security überein. Der Zeichenfolgenwert version_ stimmt mit version1 überein und stimmt nicht mit version überein. Wenn Sie nach den Zeichen % oder _ suchen möchten, können Sie Platzhalter deaktivieren. Die Verwendung von Platzhaltern
ist jedoch standardmäßig aktiviert. Der folgende Suchfilter kann verwendet werden,
um die Richtlinie mit dem Namen "Base Policy" zu finden.# Create the search criteria search_criteria = api.SearchCriteria() search_criteria.field_name = "name" search_criteria.string_test = "equal" search_criteria.string_value = "Base%"
TippUm Platzhaltersuchen zu deaktivieren, setzen Sie die Eigenschaft `stringWildcards`
des Objekts `SearchCriteria` auf `false`.
search_criteria.string_wildcards = "false" |
Datumsbereich-Suche durchführen
Sie können Felder durchsuchen, die Datumswerte enthalten, die zwischen zwei angegebenen
Daten liegen. Die folgenden Suchkriterienfelder definieren den Datumsbereich:
- FirstDate: Das frühere Datum im Bereich. Der Standardwert ist das frühestmögliche Datum.
- FirstDateInclusive: Ein boolescher Wert, der angibt, ob der Bereich das FirstDate einschließt (true) oder nicht (false). Der Standardwert ist false.
- LastDate: Das spätere Datum im Bereich. Der Standardwert ist das spätestmögliche Datum.
- LastDateInclusive: Ein boolescher Wert, der angibt, ob der Bereich das Enddatum einschließt (wahr) oder nicht (falsch). Der Standardwert ist falsch.
Die Werte für
FirstDate und LastDate werden als Anzahl der Millisekunden seit dem 1. Januar 1970 (GMT) angegeben.Das folgende Beispiel sucht nach Regeln zum Eindringschutz basierend darauf, wann
sie zuletzt aktualisiert wurden.
# Time that rules were last updated current_time_in_ms = int(round(time.time() * 1000)) last_updated_in_ms = current_time_in_ms - (num_days * 24 * 60 * 60 * 1000) # Set search criteria for the date range search_criteria = api.SearchCriteria() search_criteria.field_name = "lastUpdated" search_criteria.first_date_value = last_updated_in_ms search_criteria.last_date_value = current_time_in_ms search_criteria.first_date_inclusive = True search_criteria.last_date_inclusive = True # Create a search filter search_filter = api.SearchFilter(None, [search_criteria]) # Perform the search intrusion_prevention_rules_api = api.IntrusionPreventionRulesApi(api.ApiClient(configuration)) return intrusion_prevention_rules_api.search_intrusion_prevention_rules(api_version, search_filter=search_filter)
Siehe auch die Suchoperation für Regeln zum Eindringschutz im API-Referenzhandbuch. Informationen zur Authentifizierung von API-Aufrufen finden
Sie unter Authentifizieren mit Server- und Workload Protection.
Suche nach Nullwerten
Verwenden Sie eine Null-Test-Suche, um Ressourcen basierend darauf zu finden, ob ein
Feld keinen Wert (null) oder irgendeinen Wert hat. Zum Beispiel zeigt das
lastSendPolicySuccess-Feld eines Computers an, wann die Richtlinie des Computers zuletzt erfolgreich aktualisiert
wurde. Um Computer zu finden, die noch nie ein Richtlinien-Update erhalten haben,
führen Sie eine Null-Test-Suche in diesem Feld durch.Bei dieser Art der Suche umfassen die Suchkriterien den Namen des Feldes, in dem gesucht
werden soll, und ob Sie Ressourcen finden möchten, die keinen Wert (
null_test = true) oder irgendeinen Wert (null_test = false) haben.Das folgende Beispiel sucht nach Computern, die noch nie ein Richtlinien-Update erhalten
haben:
# Search criteria computer_criteria = api.SearchCriteria() computer_criteria.field_name = "lastSendPolicySuccess" computer_criteria.null_test = True # Search filter max_items = None search_filter = api.SearchFilter(max_items, computer_criteria) # Include minimal information in the returned computers expand = api.Expand(api.Expand.none) # Perform the search computers_api = api.ComputersApi(api.ApiClient(configuration)) return computers_api.search_computers(api_version, search_filter=search_filter, expand=expand.list(), overrides=False)
Weitere Informationen finden Sie in der Suche nach Computern-Operation in der API-Referenz.
Sortierreihenfolge
Die Merkmale der Suchkriterien bestimmen die Sortierreihenfolge der Suchergebnisse:
-
Boolean, Choice, Null, and String searches: Sortiert nach der ID des zurückgegebenen Objekts in aufsteigender Reihenfolge.
-
ID searches: Nach ID sortiert. Der Operator bestimmt, ob die Reihenfolge aufsteigend oder absteigend ist:
- kleiner als und kleiner gleich: absteigend
- Alle anderen Operatoren: aufsteigend
-
Numeric searches: Sortiert nach dem Feld, das durchsucht wird. Der Operator bestimmt, ob die Reihenfolge aufsteigend oder absteigend ist:
- kleiner als und kleiner gleich: absteigend
- Alle anderen Operatoren: aufsteigend
Wenn mehrere Suchergebnisse denselben Wert für das gesuchte Feld haben, werden diese Objekte sekundär nach ID sortiert. -
Date searches: Sortiert nach dem Feld, das durchsucht wird. Die für die Suche angegebenen Datumsbereich-Parameter bestimmen die Sortierreihenfolge:
- Nur LastDate ist angegeben: absteigend
- Jede andere Kombination: aufsteigend
Wenn mehrere Suchergebnisse denselben Wert für das gesuchte Datumsfeld haben, werden diese Objekte sekundär nach ID sortiert. -
Multiple search criteria: Suchen, die mehrere Suchkriterien verwenden, werden nach ID (aufsteigend) sortiert, unabhängig von der Standardsortierreihenfolge der einzelnen Kriterien.
Mit SearchFilter-Objekten können Sie die standardmäßige Sortierreihenfolge außer Kraft
setzen und nach der ID der zurückgegebenen Objekte sortieren.
Suchergebnisse und Seitenumbruch begrenzen
Verwenden Sie das
maxItems-Feld eines Suchfilters, um die Anzahl der zurückgegebenen Objekte zu begrenzen. Die
maximale Anzahl der zurückgegebenen Objekte beträgt standardmäßig 5000 und kann 5000
nicht überschreiten.Sie können auch das Feld
maxItems verwenden, um die Seiteneinteilung der Ergebnisse von ID-Suchen zu implementieren:- Suche nach ID mit dem Größer-als-Operator
- Verwenden Sie maxItems, um die Seitengröße festzulegen
- Berechnen Sie den Wert der ID, nach der gesucht werden soll, basierend auf der höchsten ID auf der vorherigen Ergebnisseite.
Das folgende Beispiel zeigt, wie Sie Suchen verwenden, um alle Computer in einer Reihe
von Seiten abzurufen.
# Set search criteria
search_criteria = api.SearchCriteria()
search_criteria.id_value = 0
search_criteria.id_test = "greater-than"
# Create a search filter with maximum returned items
page_size = 10
search_filter = api.SearchFilter()
search_filter.max_items = page_size
search_filter.search_criteria = [search_criteria]
# Include the minimum information in the returned Computer objects
expand = api.Expand(api.Expand.none)
# Perform the search and do work on the results
computers_api = api.ComputersApi(api.ApiClient(configuration))
paged_computers = []
while True:
computers = computers_api.search_computers(api_version, search_filter=search_filter, expand=expand.list(), overrides=False)
num_found = len(computers.computers)
current_paged_computers = []
if num_found == 0:
print("No computers found.")
break
for computer in computers.computers:
current_paged_computers.append(computer)
paged_computers.append(current_paged_computers)
# Get the ID of the last computer in the page and return it with the number of computers on the page
last_id = computers.computers[-1].id
search_criteria.id_value = last_id
print("Last ID: " + str(last_id), "Computers found: " + str(num_found))
return paged_computers
Siehe auch die Computer durchsuchen-Operation im API-Referenzhandbuch. Informationen zur Authentifizierung von API-Aufrufen
finden Sie unter Authentifizierung mit Server- und Workload Protection.
