-
Notifications
You must be signed in to change notification settings - Fork 275
Closed
Description
I have this elasticsearch Java code to connect and get data:
Gradle dependencies:
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<String, Object> 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<String, Object> parameters = new HashMap<>();
parameters.put("offset", offset);
parameters.put("limit", limit);
parameters.put("users", searchQuery);
SearchResponse response = ESRepository.searchScript(parameters, "search_template");
For latest version:
implementation 'co.elastic.clients:elasticsearch-java:9.2.0'
implementation 'org.elasticsearch.client:elasticsearch-rest-client:9.2.0'
I can't find a replacement for above builder classes. Do you know how I can migrate the code and keep the same structure/logic if possible?
Metadata
Metadata
Assignees
Labels
No labels