2017-03-06 2 views
0

Ich möchte die Anzahl der Dokumente basierend auf meinen Filterregeln aggregieren und zählen.Aggregiertes gefiltertes Ergebnis mit Elastic Search API

ich an der API von ihrer Website sah: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-filters-aggregation.html

und kam mit dieser heraus:

{ "size": 0, 
     "aggregations": { 
      "messages": { 
       "filters":{ 
         "filters": { 
          "knowledge service": { "match": {"syslog_msg": "my-domain.com"}} 
          } 
         } 
         } 
        } 
} 

"syslog_msg" Informationen wie "my-domain.com einen anderen Wert" enthalten.

Die Antwort bekam ich:

{ 
    "_scroll_id" : "some scroll id", 
    "took" : 89, 
    "timed_out" : false, 
    "_shards" : { 
    "total" : 5, 
    "successful" : 5, 
    "failed" : 0 
}, 
"hits" : { 
"total" : 1000000, 
"max_score" : 0.0, 
"hits" : [ ] 
}, 
"aggregations" : { 
    "messages" : { 
    "buckets" : { 
     "knowledge service" : {"doc_count" : 12000} 
     } 
    } 
} 
} 

Es scheint, funktioniert gut, aber wenn ich eine Abfrage lief an den 12000 Datensätze zu suchen, nicht exakte Übereinstimmung mit dem String einige von ihnen haben (in diesem Fall meine -domain.com), nach denen ich gesucht habe.

Zum Beispiel haben einige Dokumente die Zeichenfolge "my" in syslog_msg statt "my-domain.com".

Wie ändere ich die Abfrage, so dass es die genaue Übereinstimmung für die Zeichenfolge, die ich suche, filtert?


Die Lösung ist Spiel mit match_phrase zu ersetzen, die die genaue Wort

gefunden sucht und das Rück

Antwort

Verwandte Themen