2016-07-15 7 views
0

Ich habe einen Index, der wie folgt aussieht:Elasticsearch Rückkehr verschachtelte Objekte ohne ihre Eltern

{ 
    "mappings":{ 
     "authors":{ 
      "properties":{ 
       "books":{ 
        "type":"nested", 
        "properties":{ 
         "title":{"type":"string"}, 
         "firstSentence":{"type":"string"}, 
         "isbn":{"type":"string"}, 
         "publishDate":{"type":"date"}, 
        } 
       }, 
       "firstName":{"type":"string"}, 
       "lastName":{"type":"string"}, 
       "birthday":{"type":"date"}, 
       } 
      } 
} 

ich diesen Index über einen Java-Client am abfragt. Für diese Frage interessieren mich die Autoren nicht; Alles, was ich zurückbekommen möchte, sind Bücher. Zum Beispiel würde ich gerne alle Bücher mit dem Wort "Hallo" im Titel und im ersten Satz finden.

Derzeit verwende ich eine verschachtelte Abfrage, die eine Liste von Autoren zurückgibt, und dann manuell analysiere ich diese Liste, um die Bücher zu erhalten. Gibt es eine Möglichkeit, Elasticsearch direkt mit einer Liste von Büchern zu versorgen? Ich verwende Elasticsearch Version 1.5.2, und Jest 0.1.6

Antwort

1

Nein, die Ergebnisse sind die Dokumente, die Sie injizieren. Sie können die Quellfilterung verwenden, um die Felder der Dokumente einzuschränken, die zurückgegeben werden. Auf diese Weise können Sie nur die verschachtelten Dokumente abrufen. Aber diese werden immer in den Bereich des verschachtelten Elternteils fallen. Wenn Sie also zwei Autoren mit jeweils ein paar Büchern finden, erhalten Sie zwei Ergebnisse mit den darin enthaltenen verschachtelten Dokumenten zurück.

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-source-filtering.html#search-request-source-filtering