# Requête pour récupérer champs avec java sous elasticsearch version 6.6

**URL:** <https://discuss.elastic.co/t/requete-pour-recuperer-champs-avec-java-sous-elasticsearch-version-6-6/178686>\
**Category:** Discussions en français\
**Created:** [April 26, 2019, 4:01pm UTC](https://discuss.elastic.co/t/requete-pour-recuperer-champs-avec-java-sous-elasticsearch-version-6-6/178686 "2019-04-26T16:01:12Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![hafid](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/hafid/32/45111_2.png) [@hafid](https://discuss.elastic.co/u/hafid)\
**Post date:** [April 26, 2019, 4:01pm UTC](https://discuss.elastic.co/t/requete-pour-recuperer-champs-avec-java-sous-elasticsearch-version-6-6/178686/1 "2019-04-26T16:01:12Z")

</div>

Bonjour  
Jai indexer des documents et jai besoin de récupérer uniquement ces champs en JAVA que j'arrive à visiualiser avec le plugin chrome elasticsearh HEAD.

LES CHAMPS RECHERCHE:

- "attachment": {
  - "date": "2009-03-25T13:32:21Z",
  - "content\_type": "application/pdf",
  - "author": "Vincent",
  - "language": "fr",
  - "title": "Microsoft cv.doc",  
 ![imgelastic](https://us1.discourse-cdn.com/elastic/original/3X/9/e/9e3fdf9191000bc7d12014ea0ae4937f25dd4111.png)  
LES CHAMPS DISPONIBLES

valeur de la cle : entreprise  
valeur de la cle : data  
valeur de la cle : attachment  
valeur de la cle : typeDocument  
valeur de la cle : nomFichier  
valeur de la cle : url  
valeur de la cle : timestamp

LE CODE PARTIEL UTILISE

```
RestHighLevelClient client = new RestHighLevelClient(
		        RestClient.builder(
		                new HttpHost("localhost", 9200, "http"),
		                new HttpHost("localhost", 9201, "http")));
			
			SearchRequest searchRequest = new SearchRequest("dossier"); 
			SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); 
			searchSourceBuilder.query(QueryBuilders.matchAllQuery()); 
			searchSourceBuilder.size(1);
			searchRequest.source(searchSourceBuilder);
	        SearchResponse response = client.search(searchRequest);		
	        SearchHit[] searchHits = response.getHits().getHits();	 
	        
	        for (SearchHit hit : searchHits) {

	        	Map<String, Object> map = hit.getSourceAsMap();

	        	System.out.println("valeur : "+ map.get("attachment"));
	        	System.out.println("valeur : "+ map.get("data"));
	        	
	        	/*
	        	 * valeur de la cle : entreprise
					valeur de la cle : data
					valeur de la cle : attachment
					valeur de la cle : typeDocument
					valeur de la cle : nomFichier
					valeur de la cle : url
					valeur de la cle : timestamp
	        	 * */

	        	
	        	
	        }
```

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [April 29, 2019, 1:59pm UTC](https://discuss.elastic.co/t/requete-pour-recuperer-champs-avec-java-sous-elasticsearch-version-6-6/178686/2 "2019-04-29T13:59:01Z")

</div>

Et ? Qu'est ce qui ne fonctionne pas ?

---

<div class="post-metadata">

**Author:** ![hafid](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/hafid/32/45111_2.png) [@hafid](https://discuss.elastic.co/u/hafid)\
**Post date:** [April 29, 2019, 2:13pm UTC](https://discuss.elastic.co/t/requete-pour-recuperer-champs-avec-java-sous-elasticsearch-version-6-6/178686/3 "2019-04-29T14:13:17Z")

</div>

je cherchais à recupere des informations sur les documents déjà indexer , mais j'y arrivais pas jai trouvé une solution .

```
String [] includeFields = new String [] {"attachment.content_type","attachment.language"};
String [] excludeFields = new String[] {"url"};
searchSourceBuilder.fetchSource(includeFields,excludeFields);

```

enfin dans une boucle recupere les champs ainsi :

```
 for (SearchHit hit : searchHits) {
	        	Map<String, Object> map = hit.getSourceAsMap();
	        
	        	//conversion json
	        	String json = gson.toJson(map);
	        	//System.out.println(json);
	        	
	        	//lecture du champs 
	        	String content_type = JsonPath.read(json, "$.attachment.content_type");
	       	 	System.out.println(content_type);
				
	       	 	String language = JsonPath.read(json, "$.attachment.language");
	       	 	System.out.println(language);
	       	 	
	        }

```

Je ne pense pas que ce soit la bonne méthode donc je suis toujours à l'écoute.

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [April 29, 2019, 3:33pm UTC](https://discuss.elastic.co/t/requete-pour-recuperer-champs-avec-java-sous-elasticsearch-version-6-6/178686/4 "2019-04-29T15:33:09Z")

</div>

C'est une méthode. Elle a l'avantage de faire passer sur le réseau moins de données.

---

<div class="post-metadata">

**Author:** ![hafid](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/hafid/32/45111_2.png) [@hafid](https://discuss.elastic.co/u/hafid)\
**Post date:** [May 1, 2019, 1:20pm UTC](https://discuss.elastic.co/t/requete-pour-recuperer-champs-avec-java-sous-elasticsearch-version-6-6/178686/5 "2019-05-01T13:20:57Z")

</div>

Une petite question comment traduire cette requete sous java api

> ```
> { "query" : { 
> "bool":{
> "must":[
> {"match": { "attachment.content": "test" }},
> {"match": { "typeDocument": "pdf" }},
> {"match": { "entreprise": "fr"}},
> ]        
> }
> }
> 
> ```

je l'ecrirai ainsi mais cependant c'est correct ??

```
searchSourceBuilder.query(QueryBuilders.matchQuery("attachment.content","test")
searchSourceBuilder.query(QueryBuilders.matchQuery("typeDocument","pdf")
searchSourceBuilder.query(QueryBuilders.matchQuery("entreprise","fr")

```

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [May 1, 2019, 4:55pm UTC](https://discuss.elastic.co/t/requete-pour-recuperer-champs-avec-java-sous-elasticsearch-version-6-6/178686/6 "2019-05-01T16:55:46Z")

</div>

Non. Il faut que tu fasses une bool query. Et que tu appelles la méthode must pour chaque clause que tu veux mettre.

---

<div class="post-metadata">

**Author:** ![hafid](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/hafid/32/45111_2.png) [@hafid](https://discuss.elastic.co/u/hafid)\
**Post date:** [May 2, 2019, 9:24am UTC](https://discuss.elastic.co/t/requete-pour-recuperer-champs-avec-java-sous-elasticsearch-version-6-6/178686/7 "2019-05-02T09:24:59Z")

</div>

Je comprends alors ceci :

`searchSourceBuilder.query(QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("attachment.content",hit)));`

Maintenant j’ai un souci je veux que ce soit plusieurs mots clés qui sont chercher à la fois sur le même champs ("attachment.content","test") et ("attachment.content","test2") .

Mais cependant sans savoir à l'avance le nombre de mot clé utilisé.

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [May 2, 2019, 10:55am UTC](https://discuss.elastic.co/t/requete-pour-recuperer-champs-avec-java-sous-elasticsearch-version-6-6/178686/8 "2019-05-02T10:55:27Z")

</div>

Tu fais un boucle `for` sur tes mots clés et pour chaque tu appelles:

```auto
boolQuery.must(QueryBuilders.matchQuery("attachment.content", motcle));

```

---

<div class="post-metadata">

**Author:** ![hafid](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/hafid/32/45111_2.png) [@hafid](https://discuss.elastic.co/u/hafid)\
**Post date:** [May 2, 2019, 10:58am UTC](https://discuss.elastic.co/t/requete-pour-recuperer-champs-avec-java-sous-elasticsearch-version-6-6/178686/9 "2019-05-02T10:58:28Z")

</div>

Merci pour votre réponse je vois :

```
 BoolQueryBuilder constBool = QueryBuilders.boolQuery();
 for(String hit : rechParams) {		 
 	constBool.must(QueryBuilders.matchQuery("attachment.content",hit));
 }
```

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [May 30, 2019, 10:58am UTC](https://discuss.elastic.co/t/requete-pour-recuperer-champs-avec-java-sous-elasticsearch-version-6-6/178686/10 "2019-05-30T10:58:29Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
