2011-11-16 13 views
15

Soy nuevo en elasticsearch y estoy buscando un poco de ayuda para usar la API de Java. Tengo algunos objetos de dominio P. ej.elasticsearch insertar objetos en el índice

@XmlRootElement 

public class BasicActivity { 

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

He creado un cliente de transporte conectado a un nodo

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

está ahí y manera fácil de insertar mi objeto directamente en elasticsearch?

he visto este

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(); 

Pero para hacer eso tendría que convertir cada objeto en JSON, que si bien no es posible mi situación ideal.

Si tengo un malentendido sobre cómo funciona (arquitectónicamente), házmelo saber, ¡estoy aquí para aprender!

aplausos, Rob

Respuesta

26

Creo que estás en el camino correcto. La API de Java puede ser difícil de obtener cuando no está acostumbrado. Creo que con el tiempo mejorará.

Tienes que convertir tus objetos a Json para enviarlos a tu clúster de ElasticSearch. Gson es una de las muchas bibliotecas populares que pueden hacer eso por usted.

El código que se muestra arriba creará un índice. Ahora, para agregar un documento a ese índice, ejecute algo como esto.

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(); 

Salida BulkRequest para la indexación de varios elementos a la vez. Una vez que tus objetos se vuelvan más complejos, necesitarás crear Mappings.

He encontrado buenos ejemplos en el Guide, pero en general hay más ejemplos detallados en el ES Google Group.

Tengo que recomendar la parte delantera Head, también. Muestra los índices y elementos existentes.

+0

Spot on, muchas gracias que fue realmente útil – Rob

+6

Jackson es otra biblioteca Json, parece que se compara favorablemente con Gson en términos de rendimiento. http://jackson.codehaus.org/Tutorial – Andy

Cuestiones relacionadas