2016-06-27 11 views
0

ich verwende Elasticsearch 1.7 und ich habe Filter finden muss nicht von Aggregation Schlüsselwert Unten finden Sie die Struktur:Elasticsearch Aggregation Ergebnis Schlüssel Filter aus dem Feld oder Felder

{"RU": "2016-06-25T15:07:46.144","zt":"bl","zi":"z101"} 
 
{"RU": "2016-06-25T15:07:46.144","zt":"bl","zi":"z102"} 
 
{"RU": "2016-06-25T15:07:46.144","zt":"bl","zi":"z103"} 
 
{"RU": "2016-06-25T15:07:46.144","zt":"un","zi":"z201"} 
 
{"RU": "2016-06-25T15:07:46.144","zt":"un","zi":"z202"} 
 
{"RU": "2016-06-25T15:07:46.144","zt":"g1","zi":"z101"} 
 
{"RU": "2016-06-25T15:07:46.144","zt":"g1","zi":"z502"} 
 
{"RU": "2016-06-25T15:07:46.144","zt":"g2","zi":"z201"} 
 
{"RU": "2016-06-25T15:07:46.144","zt":"g2","zi":"z503"} 
 
My query : 
 
    {"size": 0, 
 
     "aggs": { 
 
      "findunique": { 
 
      "filter": { 
 
       "bool": { 
 
        "must_not": [ 
 
         { 
 
         "terms": { 
 
          "zt": [ 
 
           "bl", 
 
           "un" 
 
          ] 
 
         } 
 
         } 
 
        ], 
 
        "must": [ 
 
         { 
 
         "terms": { 
 
          "zt": [ 
 
           "g1", 
 
           "g2" 
 
          ] 
 
         } 
 
         } 
 
        ] 
 
       } 
 
      }, 
 
      "aggs": { 
 
       "uniquezi": { 
 
        "terms": { 
 
         "field": "zi" 
 
        } 
 
       } 
 
      } 
 
      } 
 
     } 
 
} 
 
------------------------------------------------------- 
 
output : 
 
{"aggregations": { 
 
     "findunique": { 
 
     "doc_count": 4, 
 
     "uniquezi": { 
 
      "doc_count_error_upper_bound": 0, 
 
      "sum_other_doc_count": 0, 
 
      "buckets": [ 
 
       { 
 
        "key": "z101", 
 
        "doc_count": 1 
 
       }, 
 
       { 
 
        "key": "z201", 
 
        "doc_count": 1 
 
       }, 
 
       { 
 
        "key": "z502", 
 
        "doc_count": 1 
 
       }, 
 
       { 
 
        "key": "z503", 
 
        "doc_count": 1 
 
       } 
 
      ] 
 
     } 
 
     } 
 
    } 
 
}}

i Jetzt schaue nicht zu zeigen, zi = z101 und z201 sollte nicht in der Liste als die Zugehörigkeit zu zt = bl und zt = un kommen Bitte schlagen Sie mir vor Danke!

Antwort

0

Als Vorschlag könnten Sie versuchen, zwei Aggregationen mit filer set auf "zt" -Feld hinzuzufügen. Auf diese Weise erhalten Sie zwei Sätze und können alle aus "Gesucht", die nicht in "Unerwünscht" sind später im Code extrahieren.

{ 
    "size": 0, 
    "aggs" : { 
    "messages" : { 
     "filters" : { 
     "filters" : { 
      "wanted" : { "terms" : { "zt" : [ "g1", "g2" ] }}, 
      "unwanted" : { "terms" : { "zt" : [ "bl", "un" ] }} 
     } 
     }, 
     "aggs" : { 
     "monthly" : { 
      "terms": {"field" : "zi"} 
     } 
     } 
    } 
    } 
} 

Antwort:

{ 
    "took": 2, 
    "timed_out": false, 
    "_shards": { 
    "total": 5, 
    "successful": 5, 
    "failed": 0 
    }, 
    "hits": { 
    "total": 9, 
    "max_score": 0, 
    "hits": [] 
    }, 
    "aggregations": { 
    "messages": { 
     "buckets": { 
     "wanted": { 
      "doc_count": 4, 
      "distinctValuesAgg": { 
      "doc_count_error_upper_bound": 0, 
      "sum_other_doc_count": 0, 
      "buckets": [ 
       { 
       "key": "z101", 
       "doc_count": 1 
       }, 
       { 
       "key": "z201", 
       "doc_count": 1 
       }, 
       { 
       "key": "z502", 
       "doc_count": 1 
       }, 
       { 
       "key": "z503", 
       "doc_count": 1 
       } 
      ] 
      } 
     }, 
     "unwanted": { 
      "doc_count": 5, 
      "distinctValuesAgg": { 
      "doc_count_error_upper_bound": 0, 
      "sum_other_doc_count": 0, 
      "buckets": [ 
       { 
       "key": "z101", 
       "doc_count": 1 
       }, 
       { 
       "key": "z102", 
       "doc_count": 1 
       }, 
       { 
       "key": "z103", 
       "doc_count": 1 
       }, 
       { 
       "key": "z201", 
       "doc_count": 1 
       }, 
       { 
       "key": "z202", 
       "doc_count": 1 
       } 
      ] 
      } 
     } 
     } 
    } 
    } 
} 
+0

Thank u Tomasz so viel für die schnelle Antwort! aber ich erhalte folgenden Fehler: verschachtelt: SearchParseException [[ultronlist] [3]: von [-1], size [-1]: Parse Failure [Erwartete [FIELD_NAME] unter einem [START_OBJECT], bekam aber ein [START_OBJECT] in [Gesucht]]]; } {[EGOcq-dvTteB7jBQG0aeGQ] [ultronlist] [4]: ​​SearchParseException [[ultronlist] [4]: ​​aus [-1], size [-1]: Parse Failure [Fehler beim Analysieren der Quelle –

+0

] Tut mir leid, ich kann nicht Stellen Sie den elastischen Server lokal ein, um ihn sofort auszuführen, wenn diese Lösung akzeptabel sein könnte, werde ich später versuchen, den Code zu reparieren und Ihnen zu stellen .. Es muss mir etwas Tippfehler .. –

+0

ok danke Tomasz, ich werde warten .. weil ich tat und versuchte, Erfolg zu bekommen .. aber nicht .. –

Verwandte Themen