2017-06-18 8 views
0

Ich möchte eine Aggregation von Termen durchführen und in jedem Ergebnis-Bucket die Trefferfelder erhalten, nachdem eine Skriptmanipulation durchgeführt wurde.elasticsearch: Ausführen eines Skripts über den Top-Hits-Aggregationsfeldern

Zum Beispiel, wenn diese die Dokumente:

{"age": 15, "firstName": "Dana", "lastName": "Miller"} 
{"age": 15, "firstName": "Michelle", "lastName": "Bob"} 
{"age": 32, "firstName": "Mary", "lastName": "Smith"} 
{"age": 32, "firstName": "Anna", "lastName": "Taylor"} 

Die Aggregation ist durch das "Alter" Feld, und das Skript ist: „return 'doc [' firstname '] +' '+ doc [ 'nachName'] "

Die Ergebnisse sollten:

bucket 1 (Alter: 15):

  • " Dana Mühle er“
  • "Michelle Bob"

Buchet 2 (32 Jahre):

  • Mary Smith
  • Anna Taylor

Ist das möglich in Elasticsearch?

EDIT:

Außerdem suche ich nach einer Möglichkeit, ein Skript über mehrere Treffer in einem Eimer zu laufen. Zum Beispiel, wenn wir die oben genannten Dokumente und die Begriffe Aggregation nach dem Alter-Feld verwenden, kann ich die Ergebnisse der Treffer in den Eimer auf folgende Weise zusammen bekommen?

Bucket 1 (15 Jahre):

  • "Dana Miller und Michelle Bob"

Bucket2 (32 Jahre):

  • "Mary Smith und Anna Taylor"

Ist es in ES möglich?

danke.

Antwort

0

Ich denke, folgende Abfrage kann Ihnen helfen.

{ 
"size": 0, 
"aggs": { 
    "group By age": { 
    "terms": { 
     "field": "age" 
    }, 
    "aggs": { 
     "top hits": { 
      "top_hits": { 
       "script_fields": { 
       "Name": { 
        "script": "doc['firstName'].value + ' ' + doc['lastName'].value " 
        } 
       } 
       } 
      } 
     } 
     } 
    } 
    } 

Hoffe das hilft !!

+0

danke. Können Sie ein Skript auch über mehrere Buckets hinweg ausführen? – Shani

+0

Ich habe dich nicht ??? Was willst du erreichen? – Richa

+0

Ihre Antwort hat geholfen. Ich habe auch zu der obigen Frage eine weitere Frage hinzugefügt: Führen Sie ein Skript über die Ergebnisse mehrerer Buckets aus. Beispielsweise erhalten Sie das folgende Ergebnis für Bucket 1: "Dana Miller und Michelle Bob". – Shani

Verwandte Themen