Программисты JAVA общаются здесь
Anonymous
Перенос классов Elasticsearch Builder на последнюю версию Java API 9.x.
Сообщение
Anonymous » 03 ноя 2025, 18:43
У меня есть Java-код elasticsearch для подключения и получения данных:
Зависимости Gradle:
Код: Выделить всё
implementation 'org.elasticsearch:elasticsearch:5.6.16'
implementation 'org.elasticsearch.client:transport:5.6.16'
Код: Выделить всё
import org.elasticsearch.ElasticsearchException;
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.DocWriteResponse.Result;
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.bulk.BackoffPolicy;
import org.elasticsearch.action.bulk.BulkItemResponse;
import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.bulk.Retry;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.get.MultiGetItemResponse;
import org.elasticsearch.action.get.MultiGetRequestBuilder;
import org.elasticsearch.action.get.MultiGetResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexRequestBuilder;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.ClearScrollRequest;
import org.elasticsearch.action.search.ClearScrollResponse;
import org.elasticsearch.action.search.MultiSearchRequestBuilder;
import org.elasticsearch.action.search.MultiSearchResponse;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchScrollRequestBuilder;
import org.elasticsearch.action.support.master.AcknowledgedResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.index.engine.DocumentMissingException;
import org.elasticsearch.index.reindex.BulkByScrollResponse;
import org.elasticsearch.index.reindex.DeleteByQueryAction;
import org.elasticsearch.index.reindex.DeleteByQueryRequestBuilder;
import org.elasticsearch.script.mustache.SearchTemplateRequestBuilder;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
public class ESRepository {
private TransportClient client;
//.. java method to initialize client connection object
protected SearchRequestBuilder getSearchRequestBuilder() {
try {
return client.prepareSearch();
} catch (Exception exception) {
throw Exception();
}
}
public SearchResponse search(SearchRequestBuilder builder) {
try {
return builder.get();
} catch (Exception exception) {
throw Exception();
}
}
public SearchScrollRequestBuilder getSearchScrollRequestBuilder(String scrollId) {
try {
return client.prepareSearchScroll(scrollId);
} catch (Exception exception) {
throw Exception();
}
}
public SearchResponse searchScroll(SearchScrollRequestBuilder builder) {
try {
return builder.get();
} catch (Exception exception) {
throw Exception();
}
}
}
Код: Выделить всё
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.script.ScriptType;
import org.elasticsearch.script.mustache.SearchTemplateRequestBuilder;
import org.elasticsearch.script.mustache.SearchTemplateResponse;
import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.nested.NestedAggregationBuilder;
import org.elasticsearch.search.sort.SortBuilder;
public class Search extends ESRepository {
public SearchResponse searchScript(Map parameters, String scriptName) {
SearchTemplateRequestBuilder searchTemplateRequestBuilder = getSearchTemplateRequestBuilder();
SearchTemplateResponse response = searchTemplateRequestBuilder.setScript(scriptName)
.setScriptType(ScriptType.STORED).setScriptParams(parameters)
.setRequest(new SearchRequest(this.readIndex)).get();
return response.getResponse();
}
}
Map parameters = new HashMap();
parameters.put("offset", offset);
parameters.put("limit", limit);
parameters.put("users", searchQuery);
SearchResponse response = ESRepository.searchScript(parameters, "search_template");
Для последней версии:
Код: Выделить всё
implementation 'co.elastic.clients:elasticsearch-java:9.2.0'
implementation 'org.elasticsearch.client:elasticsearch-rest-client:9.2.0'
Я не могу найти замену вышеуказанным классам компоновщика. Знаете ли вы, как я могу перенести код и сохранить ту же структуру/логику, если это возможно?
Подробнее здесь:
https://stackoverflow.com/questions/797 ... va-api-9-x
1762184619
Anonymous
У меня есть Java-код elasticsearch для подключения и получения данных: Зависимости Gradle: [code] implementation 'org.elasticsearch:elasticsearch:5.6.16' implementation 'org.elasticsearch.client:transport:5.6.16' [/code] [code] import org.elasticsearch.ElasticsearchException; import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.DocWriteResponse.Result; import org.elasticsearch.action.admin.indices.create.CreateIndexRequest; import org.elasticsearch.action.admin.indices.create.CreateIndexResponse; import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest; import org.elasticsearch.action.bulk.BackoffPolicy; import org.elasticsearch.action.bulk.BulkItemResponse; import org.elasticsearch.action.bulk.BulkRequestBuilder; import org.elasticsearch.action.bulk.BulkResponse; import org.elasticsearch.action.bulk.Retry; import org.elasticsearch.action.delete.DeleteResponse; import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.action.get.MultiGetItemResponse; import org.elasticsearch.action.get.MultiGetRequestBuilder; import org.elasticsearch.action.get.MultiGetResponse; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.index.IndexRequestBuilder; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.action.search.ClearScrollRequest; import org.elasticsearch.action.search.ClearScrollResponse; import org.elasticsearch.action.search.MultiSearchRequestBuilder; import org.elasticsearch.action.search.MultiSearchResponse; import org.elasticsearch.action.search.SearchRequestBuilder; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchScrollRequestBuilder; import org.elasticsearch.action.support.master.AcknowledgedResponse; import org.elasticsearch.action.update.UpdateRequest; import org.elasticsearch.action.update.UpdateResponse; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.InetSocketTransportAddress; import org.elasticsearch.common.unit.TimeValue; import org.elasticsearch.index.engine.DocumentMissingException; import org.elasticsearch.index.reindex.BulkByScrollResponse; import org.elasticsearch.index.reindex.DeleteByQueryAction; import org.elasticsearch.index.reindex.DeleteByQueryRequestBuilder; import org.elasticsearch.script.mustache.SearchTemplateRequestBuilder; import org.elasticsearch.transport.client.PreBuiltTransportClient; public class ESRepository { private TransportClient client; //.. java method to initialize client connection object protected SearchRequestBuilder getSearchRequestBuilder() { try { return client.prepareSearch(); } catch (Exception exception) { throw Exception(); } } public SearchResponse search(SearchRequestBuilder builder) { try { return builder.get(); } catch (Exception exception) { throw Exception(); } } public SearchScrollRequestBuilder getSearchScrollRequestBuilder(String scrollId) { try { return client.prepareSearchScroll(scrollId); } catch (Exception exception) { throw Exception(); } } public SearchResponse searchScroll(SearchScrollRequestBuilder builder) { try { return builder.get(); } catch (Exception exception) { throw Exception(); } } } [/code] [code] import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchRequestBuilder; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.script.ScriptType; import org.elasticsearch.script.mustache.SearchTemplateRequestBuilder; import org.elasticsearch.script.mustache.SearchTemplateResponse; import org.elasticsearch.search.aggregations.AggregationBuilders; import org.elasticsearch.search.aggregations.bucket.nested.NestedAggregationBuilder; import org.elasticsearch.search.sort.SortBuilder; public class Search extends ESRepository { public SearchResponse searchScript(Map parameters, String scriptName) { SearchTemplateRequestBuilder searchTemplateRequestBuilder = getSearchTemplateRequestBuilder(); SearchTemplateResponse response = searchTemplateRequestBuilder.setScript(scriptName) .setScriptType(ScriptType.STORED).setScriptParams(parameters) .setRequest(new SearchRequest(this.readIndex)).get(); return response.getResponse(); } } Map parameters = new HashMap(); parameters.put("offset", offset); parameters.put("limit", limit); parameters.put("users", searchQuery); SearchResponse response = ESRepository.searchScript(parameters, "search_template"); [/code] Для последней версии: [code] implementation 'co.elastic.clients:elasticsearch-java:9.2.0' implementation 'org.elasticsearch.client:elasticsearch-rest-client:9.2.0' [/code] Я не могу найти замену вышеуказанным классам компоновщика. Знаете ли вы, как я могу перенести код и сохранить ту же структуру/логику, если это возможно? Подробнее здесь: [url]https://stackoverflow.com/questions/79799789/migrate-elasticsearch-builder-classes-to-latest-java-api-9-x[/url]