2017-06-15 4 views
0

ich Elasticsearch extrem bin neuJest Elasticsearch Search API Zugriffe Mapping

Ich versuche, den folgenden Code zu verstehen:

List<Hit<Talk, Void>> hits = result.getHits(Talk.class); 
     for (Hit<Talk, Void> hit: hits) { 
      Talk talk = hit.source; 
      log.info(talk.getTitle()); 
     } 

Diese direkt aus genommen wird: https://www.elastic.co/blog/found-java-clients-for-elasticsearch

Meine Frage ist, wie weiß Java, welches Feld welcher Variablen zugeordnet werden soll.

Im Wesentlichen, wie Java weiß, sagen wir, dass die Eigenschaft "title" mit der Membervariable "title" der Talk-Klasse übereinstimmt.

Prost

Antwort

0

auf der Seite erwähnt, dass die Talk Klasse ist eine Bean. Bohnen implementieren Serializable. Wenn result.getHits aufgerufen wird, beachten Sie, wie Talk.class Objekt in die Methode übergeben wird. Das bedeutet, dass Sie die Treffer im Wesentlichen in Instanzen deserialisieren. Mit der Klasse JEST Hit können Sie auf die Instanzen Talk zugreifen, nachdem sie aus der Elastisearch-Antwort deserialisiert wurden.

Weitere Informationen zu Beans finden Sie hier: What is a JavaBean exactly?

+0

so ist es notwendig, eine Klasse zu verwenden, die eine Bohne ist? Könnte ich stattdessen meine eigene Klasse erstellen, die Serializable implementiert? Vielen Dank für die Antwort! Schätze wirklich deine Hilfe! – Anant

+1

Eine Bohne ist nur eine Reihe von Kriterien, die eine Klasse erfüllen muss, um als solche betrachtet zu werden. Wenn Sie also diese Kriterien mit einer Klasse erfüllen, die Sie schreiben, ist das per Definition eine Bean. Mit anderen Worten: Ja, Sie können Ihre eigene Klasse schreiben, die Serializable implementiert, und wenn Sie die Kriterien in der Frage, die ich verlinkt habe, erfüllen, sollte es funktionieren. – ryanlutgen