2017-03-01 2 views
0

Ich möchte einige Daten in der elastischen Suche filtern 2.4. Genauer gesagt möchte ich nur die Datensätze berücksichtigen, die unter dem Label "Island" stehen.
Wenn ich so filtern:Files aus der elastischen Suche herausfiltern

filter : [{term: {Artists.Artist.Records.label : "Island"}}] 

ich Miles verlieren würde, aber die beiden anderen halten, weil sie eine Insel Label. Das ist gut, aber ich möchte verlieren alle keine Insel Datensätze, aber immer noch alle Daten von oben.

So gegeben:

{ 
    "Artists": [ 
    { 
     "Artist": "Tom Waits", 
     "Records": [ 
     { 
      "id": 1, 
      "title": "Rain dogs", 
      "label": "Island" 
     }, 
     { 
      "id": 2, 
      "title": "SwordFishTrombones", 
      "label": "Island" 
     }, 
     { 
      "id": 3, 
      "title": "Bone Machine", 
      "label": "ANTI" 
     } 
     ] 
    }, 
    { 
     "Artist": "dEUS", 
     "Records": [ 
     { 
      "id": 112, 
      "title": "Worst Case Scenario", 
      "label": "Island" 
     }, 
     { 
      "id": 2213, 
      "title": "Keep you close", 
      "label": "Universal" 
     } 
     ] 
    }, 
    { 
     "Artist": "Miles", 
     "Records": [ 
     { 
      "id": 42, 
      "title": "Kind of blue", 
      "label": "columbia" 
     } 
     ] 
    } 
    ] 
} 

Ich möchte am Ende mit:

{ 
    "Artists": [ 
    { 
     "Artist": "Tom Waits", 
     "Records": [ 
     { 
      "id": 1, 
      "title": "Rain dogs", 
      "label": "Island" 
     }, 
     { 
      "id": 2, 
      "title": "SwordFishTrombones", 
      "label": "Island" 
     } 
     ] 
    }, 
    { 
     "Artist": "dEUS", 
     "Records": [ 
     { 
      "id": 112, 
      "title": "Worst Case Scenario", 
      "label": "Island" 
     } 
     ] 
    } 
    ] 
} 

Ist das möglich? Vielen Dank!

Antwort

1

Ich glaube, dass dies mit inneren Treffern Funktionalität erreicht werden kann. Ihre Abfrage würde etwa so aussehen:

{ 
    "query": { 
    "filtered": { 
     "query": {"match_all": {}}, 
     "filter": { 
     "nested": { 
      "path": "Artists.Artist.Records", 
      "filter": { 
      "term": { 
       "Records.label": "Island" 
      } 
      }, 
      "inner_hits" : {} 
     } 
     } 
    } 
    } 
} 
Verwandte Themen