У меня есть учетная запись в Azure, а в ней — учетная запись хранения. Я хотел бы выполнить поиск по документам, которые находятся внутри папок в этом хранилище. Я уже видел, что в blob это можно сделать, но в blob невозможно создать папки или какую-либо структуру. Короче говоря, как я могу выполнять поиск в файлах в хранилище Azure?


Поиск Azure был разработан именно для этого.
Вы указываете ему свое хранилище BLOB-объектов, позволяете ему индексировать ваши файлы, а затем используете API для опроса файлов.
Что касается папок, в Azure Storage 2-го поколения у вас могут быть иерархические пространства имен, имитирующие папки. В качестве альтернативы вы можете использовать хранилище Azure Data Lake, которое имеет концепцию папок, однако первое предпочтительнее.
Краткое руководство по поиску Azure можно найти здесь, а также есть пробный уровень бесплатного пользования (ограничено 3 индексами и 10 000 документов).
На самом деле это не имеет ничего общего с java. Существует конечная точка REST API, которую вы используете после индексации файлов. Вы можете использовать curl, Java C#, Pyton и т. д. См.: docs.microsoft.com/en-us/rest/api/searchservice
Привет, Мюррей, я пробовал это несколькими способами, и было невозможно создать жизнеспособный код для доступа к json, который должен возвращать поиск, у вас есть пример того, как подключиться, независимо от языка?
Вот формальный пример Java docs.microsoft.com/en-us/azure/search/search-get-started-java
Как уже упоминал Мюррей, поиск Azure — это именно то, что вам нужно.
Вы можете найти хороший учебник здесь: Пошаговое руководство по коду поиска Azure.
Привет, Axxeption, не могли бы вы опубликовать пример того, что я могу сделать для этих поисков?
Привет! Вы имеете в виду работающий пример в качестве демонстрации?
Ну, решил.
URL url =SearchServiceHelper.getSearchURL( URLEncoder.encode("searchstring", java.nio.charset.StandardCharsets.UTF_8.toString()));
HttpsURLConnection connection = SearchServiceHelper.getHttpURLConnection(url, "GET", "KEY");
JsonReader jsonReader = Json.createReader(connection.getInputStream());
JsonObject jsonObject = jsonReader.readObject();
JsonArray jsonArray = jsonObject.getJsonArray("value");
jsonReader.close();
System.out.println(connection.getResponseMessage());
System.out.println(connection.getResponseCode());
System.out.println(url);
JsonArray jsonResult = jsonArray;
List<Structure> docList = jsonToDocument(jsonResult);
-------------------
Where :
private static final String _searchURL = "https://%s.search.windows.net/indexes/%s/docs?api-version=%s&search=%s&searchMode=all";
public static URL getSearchURL( String query) throws MalformedURLException
{
Formatter strFormatter = new Formatter();
strFormatter.format(_searchURL, "searchservicenameonly", "index", "api-version", query);
String url = strFormatter.out().toString();
strFormatter.close();
return new URL(url);
}
---------------------------------------------------------------------
public static HttpsURLConnection getHttpURLConnection(URL url, String method, String apiKey) throws IOException
{
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setRequestMethod(method);
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("api-key", apiKey);
return connection;
}
Вы должны создать структуру для сохранения данных, которые возвращает поиск.
Привет, Мюррей. Не могли бы вы привести пример в Java, как это сделать?