2011-11-16 13 views
15

Sono nuovo in Elasticsearch e cerco un po 'di aiuto nell'utilizzo dell'API Java. Ho alcuni oggetti del dominio E.g.elasticsearch inserisce gli oggetti nell'indice

@XmlRootElement 

public class BasicActivity { 

private String activityName; 
private FullActivity activity; 
// Getters and setters 
} 

ho creato un client trasporti connesso ad un nodo

Client client = new TransportClient() 
     .addTransportAddress(new InetSocketTransportAddress("192.168.0.198",9300)); 

c'è e modo semplice per inserire il mio oggetto dritto in elasticsearch?

Ho visto questo

IndexResponse response = client.prepareIndex("twitter", "tweet", "1") 
        .setSource(jsonBuilder() 
           .startObject() 
            .field("user", "kimchy") 
            .field("postDate", new Date()) 
            .field("message", "trying out Elastic  Search") 
           .endObject() 
          ) 
        .execute() 
        .actionGet(); 

Ma per farlo avrei dovuto convertire ogni oggetto in JSON, che pur possibile, non è la mia situazione ideale.

Se ho un fraintendimento di come funziona (architettonicamente), per favore fatemelo sapere, sono qui per imparare!

applausi, Rob

risposta

26

io pensi di essere sulla strada giusta. L'API Java può essere difficile da ottenere in momenti in cui non ci si è abituati. Penso che col tempo andrà meglio.

Devi convertire gli oggetti in Json per inviarli al tuo cluster ElasticSearch. Gson è una delle tante librerie popolari che possono farlo per te.

Il codice visualizzato sopra creerà un indice. Ora per aggiungere un documento a quell'indice, esegui qualcosa come questo.

Tweet tweet = new Tweet(); 
    tweet.setId("1234"); 
    tweet.setMessage("message"); 

    IndexRequest indexRequest = new IndexRequest("twitter","tweet", tweet.getId()); 
    indexRequest.source(new Gson().toJson(tweet)); 
    IndexResponse response = client.index(indexRequest).actionGet(); 

Partenza BulkRequest per l'indicizzazione di diversi elementi in una sola volta. Una volta che gli oggetti diventano più complessi, devi creare Mappings.

Ho trovato ottimi esempi nello Guide, ma di solito esempi più dettagliati nello ES Google Group.

Devo raccomandare anche il front-end Head. Ti mostra gli indici e gli articoli esistenti.

+0

Spot on, grazie mille che è stato davvero utile – Rob

+6

Jackson è un'altra libreria Json, sembra in grado di confrontare favorevolmente Gson in termini di prestazioni. http://jackson.codehaus.org/Tutorial – Andy