0

Ich verwende Spring Daten Elasticsearch zu analysieren Daten in ELasticseach. Ich habe bereits dort ein indiziertes Element (elastalert), das die Eigenschaft alert_sent enthält. Also, was ich tun möchte, ist die Rückgabe aller Warnungen, die an den Administrator gesendet wurden. Ich habe versucht, eine Methode im Repository List<Alert> findByAlert_sentTrue() zu definieren, aber es scheint, dass der Unterstrich ein Problem ist (wie in der Dokumentation http://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#repositories.query-methods.query-property-expressions erwähnt).Suche ein bestimmtes Feld in elasticsearch durch Spring Daten elasticsearch

Hier die Abbildung des indizierten Elements:

{ 
    "elastalert_status" : { 
    "mappings" : { 
     "elastalert" : { 
     "properties" : { 
      "@timestamp" : { 
      "type" : "date", 
      "format" : "dateOptionalTime" 
      }, 
      "aggregate_id" : { 
      "type" : "string", 
      "index" : "not_analyzed" 
      }, 
      "alert_exception" : { 
      "type" : "string" 
      }, 
      "alert_info" : { 
      "properties" : { 
       "recipients" : { 
       "type" : "string" 
       }, 
       "type" : { 
       "type" : "string" 
       } 
      } 
      }, 
      "alert_sent" : { 
      "type" : "boolean" 
      }, 
      "alert_time" : { 
      "type" : "date", 
      "format" : "dateOptionalTime" 
      }, 
      "match_body" : { 
      "type" : "object", 
      "enabled" : false 
      }, 
      "rule_name" : { 
      "type" : "string", 
      "index" : "not_analyzed" 
      } 
     } 
     } 
    } 
    } 
} 

ich eine Einheit geschaffen, dass indizierte Element zu verwenden:

@Document(indexName = "elastalert_status", type = "elastalert") 
    public class Rule { 
     @Id 
     private String id; 
     private String name; 
     private String es_host; 
     private String es_port; 
     private String index; 
     private String type; 
     private String query; 
     private String TimeStamp; 
     private String email; 
     private int runEvery; 
     private String alertsent; 
     private String alertTime; 
     private String matchBody; 
    ... 
Getters and Setters 
... 

Mit Locken wäre es

curl -XPOST 'localhost:9200/elastalert_status/elastalert/_search?pretty' -d ' 
{ 
    "query": { "match": { "alert_sent": true } } 
}' 

werden, so Wie kann ich alle diese gesendeten Warnungen mithilfe von Spring Data Elasticsearch abrufen? Danke.

Antwort

0

ich eine Lösung gefunden, begann ich durch ein Repository zu schaffen, die die ElasticsearchRepository erweitert und hinzugefügt meine Personnalized Abfrage

public interface RuleRepository extends ElasticsearchRepository<Rule,String> { 

    @Query("{\"bool\": {\"must\": {\"match\": {\"alert_sent\": true}}}}") 
    List<Rule> findSentAlert(); 
} 

und die Warnungen zu visualisieren gerade dieses Stück Code hinzufügen:

List<Rule> rules = repository.findSentAlert(); 
    System.out.println("Rule list: " + rules); 

Ich hoffe, es könnte jemandem helfen :)

Verwandte Themen