Vous êtes sur la page 1sur 7

ElasticSearch CRUD (Java)

Stage

Tutoriel 3 : ElasticSearch JAVA AND CRUD

Elmaghraoui.ahmed@gmail.com

ElasticSearch CRUD (Java)

Stage

Sommaire
I. 1. 2. II. 1. 2. 3. 4. Cration du cluster et de lindex : ............................................................................................................................................. 3 Cration et configuration dun cluster :............................................................................................................................. 3 Cration dindex : ....................................................................................................................................................................... 3 Les mthodes CRUD avec ElasticSearch : ............................................................................................................................... 4 Cration de donne (create):.................................................................................................................................................. 4 Mise jour des donnes (update) : ..................................................................................................................................... 5 Supprimer les donnes avec ElasticSearch : .....................................................................................................................6 La recherche avec ElasticSearch ............................................................................................................................................ 7

Elmaghraoui.ahmed@gmail.com

ElasticSearch CRUD (Java)

Stage

I.

Cration du cluster et de lindex :


1. Cration et configuration dun cluster :
Avant de commencer il faut dabord crer le cluster qui jouera le rle du serveur sur le quel on va crer nos index. Une mthode pour la cration du cluster :

import static org.elasticsearch.node.NodeBuilder.nodeBuilder; import org.elasticsearch.node.Node; import org.elasticsearch.client.Client; ... public void initCluster(){ private Node node; private Client client; node=nodeBuilder().clusterName(CLUSTER_NAME).node(); client = node.client(); } ... Cette mthode permet de demmarer un nud ElasticSearch dans un cluster du nom CLUSTER_NAME. Par la suite tout nos index seront crer dans ce serveur.

2. Cration dindex :

import org.elasticsearch.ElasticsearchException; import org.elasticsearch.action.admin.*; Elmaghraoui.ahmed@gmail.com import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.*;

ElasticSearch CRUD (Java)

Stage

Le TransportClient permet la connexion distance un cluster dElasticSearch utilisant le module de transport. En fait ici on nessaye pas de rejoindre notre cluster dj cr mais on essaye davoir une ou plusieurs adresses de transports pour les utiliser pour assurer la communication entre le client et le cluster. Une fois la connexion est tablie, on crer notre index en spcifiant son nom. Si lindex existe dj une exception se dclanche indiquant lexistence dun index qui a le mme nom qui le notre.

II.

Les mthodes CRUD avec ElasticSearch :


1. Cration de donne (create):
ElasticSearch stock les donne sous la format JSON et les index par la suite.
4

Elmaghraoui.ahmed@gmail.com

ElasticSearch CRUD (Java)

Stage

Il ya plusieurs mthode pour gnrer des document sous la format JSON par exemple: Cration manuelle : Comme son titre lindique dans ce cas lutilisateur est oblig dcrire son document JSON a la main. Utilisation dune map : Une map cest une collection de pair cls: valeurs, elle reprsente dune manire efficace le format JSON. La srialisation des Bean : ElasticSearch utilisent dj Jackson sous le paquet org.elasticsearch.common.jackson. Ainsi, on peut ajouter notre propre version Jackson dans le fichier pom.xml ou dans le classpath.

Pour notre projet on a utilis la deuximes mthode dutilisation des Map et spcialement les HashMap<String,Objet> et la mthode prepareIndex() pour la cration dindex. Mthode create () : public void create(String indexName,String,typeName, String id) { String formatJson="{"name":"ahmed","age":23}"; Client client=ClientProvider.instance().getClient(); .prepareIndex(indexName,typeName,id) .setSource(formatJson); }

Cette procdure va nous permettre de crer un document sous lindex indexName qui contiendra les informations suivantes :

2. Mise jour des donnes (update) :


Pour la mise jour lapi se base sur les scripts DSL par exemple si le nom du champ a modifier et field et que son nouveau contenu est content le script est le suivant : ctx._source.field = "content" Notre mthode de test qui sera charg de la mise a jour est la suivante :
5

Elmaghraoui.ahmed@gmail.com

ElasticSearch CRUD (Java) Mthode Save () :

Stage

public void update(){ Map<String, Object> updateObject = new HashMap<String, Object>(); updateObject.put("field1","content1"); updateObject.put("field2", "content2"); updateObject.put("fieldnum", num); ClientProvider.instance().getClient().prepareUpdate(INDEX_ NAME, TYPE_NAME, "1") .setScript("ctx._source.field1=content1; ctx._source.field2=content2; " + "ctx._source. fieldnum =num") .setScriptParams(updateObject) .execute().actionGet(); }
On prpare un objet de type Map<String,Object> dans lequel on va mettre les donne qui seront misent jour. Aprs on appel la fonction prepareUpdate() pour spcifier lindex choisit. Pour effectuer la mise jour on excute le script de mise jour en appelant la fonction setScript() qui prend en argument le script de lupdate.

3. Supprimer les donnes avec ElasticSearch :


Pour supprimer un document on cherche dabord son id puis on appel la fonction prepareDelete() : Mthode delete()

public void delete(){ DeleteResponse response = ClientProvider.instance().getClient(). prepareDelete(INDEX_NAME, TYPE_NAME, "8") .execute() .actionGet(); }

Elmaghraoui.ahmed@gmail.com

ElasticSearch CRUD (Java)

Stage

4. La recherche avec ElasticSearch


L'API de recherche permet d'excuter une requte de recherche et de retourner le rsultat de recherche qui correspond la requte. Il peut tre excut sur un ou plusieurs index et travers un ou plusieurs types. La requte peut tre fournie l'aide de l'API Query Java ou de l'API filter Java. Le corps de la requte de recherche est construit en utilisant la SearchSourceBuilder. Voici un exemple de test:

public void search(){ String termToSearch="ahmed"; QueryBuilder qb=QueryBuilders.queryString("*"+termToSearch+"*"); SearchResponse searchResponse=ClientProvider.instance().getClient(). prepareSearch(INDEX_NAME).setTypes(TYPE_NAME) .setSearchType(SearchType.QUERY_AND_FETCH). setQuery(qb). setFrom(0).setSize(60).setExplain(true) .execute() .actionGet(); SearchHit[] results=searchResponse.getHits().getHits(); System.out.println("nbre de resultats: " + results.length); for(SearchHit hit :results){ System.out.println("------------------------------"); Map<String,Object> result = hit.getSource(); System.out.println(result); } }

Elmaghraoui.ahmed@gmail.com