Recherche par requête POST avec Azure Search + Java Apache HttpClient

Documentation officielle

Search Documents (Azure Cognitive Search REST API) https://docs.microsoft.com/en-us/rest/api/searchservice/Search-Documents

Conclusion

J'étais un peu accro au fait que l'URL était différente lors d'une demande POST.

code


package hello;

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import com.google.gson.JsonObject;

public class HelloAzurePostSearch {

	public static void main(String[] args) throws Exception {

//Documentation officielle
// https://docs.microsoft.com/en-us/rest/api/searchservice/Search-Documents

// POST https://[service name].search.windows.net/indexes/[index name]/docs/search
//		?api-version=[api-version]
//	  Content-Type: application/json  
//		  api-key: [admin or query key]

		String serviceName = "{your service name}";
		String indexName = "{your index name}";
		String apiVersion = "2019-05-06";

		String adminKey = "{your admin key}";

		URIBuilder builder = new URIBuilder("https://" + serviceName + ".search.windows.net" //
				+ "/indexes/" + indexName + "/docs" //
				+ "/search" //← Notez que l'URL est différente entre GET et POST!
		) //
				.addParameter("api-version", apiVersion);

		JsonObject requestBody = new JsonObject();
		{
			requestBody.addProperty("search", "*");
			requestBody.addProperty("count", true);
		}

		CloseableHttpClient client = HttpClients.createDefault();

		HttpPost httpPost = new HttpPost(builder.build());
		httpPost.addHeader("api-key", adminKey);

		StringEntity requestEntity //
				= new StringEntity(requestBody.toString(), ContentType.APPLICATION_JSON);

		httpPost.setEntity(requestEntity);

		CloseableHttpResponse response = client.execute(httpPost);

		System.err.println(response.getStatusLine().getStatusCode());

		// response body
		System.err.println(EntityUtils.toString(response.getEntity()));

		client.close();

	}

}


c'est tout

Recommended Posts

Recherche par requête POST avec Azure Search + Java Apache HttpClient
Authentification de base avec Java 11 HttpClient
Rechercher et exécuter une méthode à partir d'une instance avec traitement (java)
Comment utiliser HttpClient de Java (Post)
Introduction aux algorithmes avec java-Search (recherche prioritaire en profondeur)
[Java] Gérer les fichiers Excel avec Apache POI
Ajouter un document à Azure Search Service (Java)
Obtenez des horodatages avec le SDK Java Azure BlobStorage
Introduction aux algorithmes avec java --Search (recherche de priorité de largeur)
Créez un environnement Apache et Tomcat avec Docker. À propos, coopération Maven & Java
Réponse à une requête en plusieurs parties par HttpURLConnection (et Apache Commons)
Soumission de test (extraction SHA-256 pour blockchain par Java)
Introduction aux algorithmes avec java --Search (bit full search)
Présentation des tests Java automatisés avec JUnit 5 + Apache Maven
Déployez des applications Web Java sur Azure avec maven
[Java] Obtenez des images avec l'API Google Custom Search