Commit d5472f5b authored by Noel Alonso's avatar Noel Alonso
Browse files

Añade compatibilidad con rest client

Implica cambios en las funciones del cliente de elastic.
Se pasan nuevas properties y se eliminan otras innecesarias.
Se pasa de array de type a un único type, ya que en versiones
posteriores no será soportado
parent e7a02750
Loading
Loading
Loading
Loading
+36 −23
Original line number Diff line number Diff line
@@ -6,18 +6,21 @@ import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.elasticsearch.action.search.MultiSearchRequestBuilder;
import org.elasticsearch.action.search.MultiSearchRequest;
import org.elasticsearch.action.search.MultiSearchResponse;
import org.elasticsearch.action.search.MultiSearchResponse.Item;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.springframework.stereotype.Repository;

import es.redmic.elasticsearchlib.data.repository.RWDataESRepository;
import es.redmic.exception.common.ExceptionType;
import es.redmic.exception.elasticsearch.ESQueryException;
import es.redmic.models.es.common.dto.EventApplicationResult;
import es.redmic.models.es.common.query.dto.MetadataQueryDTO;
import es.redmic.vesselsview.model.vessel.Vessel;
@@ -29,7 +32,7 @@ public class VesselESRepository extends RWDataESRepository<Vessel, MetadataQuery
		implements IDataRepository<Vessel, MetadataQueryDTO> {

	private static String[] INDEX = { "platform" };
	private static String[] TYPE = { "vessel" };
	private static String TYPE = "vessel";

	// @formatter:off
 
@@ -51,7 +54,7 @@ public class VesselESRepository extends RWDataESRepository<Vessel, MetadataQuery
			doc = jsonBuilder().startObject().field("type", objectMapper.convertValue(vesselType, Map.class))
					.endObject();
		} catch (IllegalArgumentException | IOException e1) {
			LOGGER.debug("Error modificando el item con id " + vesselId + " en " + getIndex()[0] + " " + getType()[0]);
			LOGGER.debug("Error modificando el item con id " + vesselId + " en " + getIndex()[0] + " " + getType());
			return new EventApplicationResult(ExceptionType.ES_UPDATE_DOCUMENT.toString());
		}

@@ -71,21 +74,26 @@ public class VesselESRepository extends RWDataESRepository<Vessel, MetadataQuery
			imoTerm = QueryBuilders.termQuery(IMO_PROPERTY, modelToIndex.getImo());
		}
		
		SearchRequestBuilder requestBuilderId = ESProvider.getClient().prepareSearch(getIndex()).setTypes(getType())
				.setQuery(idTerm).setSize(1),
			requestBuilderMmsi = ESProvider.getClient().prepareSearch(getIndex()).setTypes(getType())
				.setQuery(mmsiTerm).setSize(1),
			requestBuilderImo = ESProvider.getClient().prepareSearch(getIndex()).setTypes(getType())
				.setQuery(imoTerm).setSize(1);
		MultiSearchRequest request = new MultiSearchRequest();
		
		MultiSearchRequestBuilder multiSearchRequestBuilder = ESProvider.getClient().prepareMultiSearch()
			.add(requestBuilderId)
			.add(requestBuilderMmsi);
		SearchSourceBuilder requestBuilderId = new SearchSourceBuilder().query(idTerm).size(1),
			requestBuilderMmsi = new SearchSourceBuilder().query(mmsiTerm).size(1),
			requestBuilderImo = new SearchSourceBuilder().query(imoTerm).size(1);

		request
			.add(new SearchRequest().indices(getIndex()).source(requestBuilderId))
			.add(new SearchRequest().indices(getIndex()).source(requestBuilderMmsi));

		if (imoTerm != null)
			multiSearchRequestBuilder.add(requestBuilderImo);
			request.add(new SearchRequest().indices(getIndex()).source(requestBuilderImo));
		
		MultiSearchResponse sr = multiSearchRequestBuilder.get();
		MultiSearchResponse sr;
		try {
			sr = ESProvider.getClient().msearch(request, RequestOptions.DEFAULT);
		} catch (IOException e) {
			e.printStackTrace();
			throw new ESQueryException();
		}

		// @formatter:on

@@ -128,23 +136,28 @@ public class VesselESRepository extends RWDataESRepository<Vessel, MetadataQuery
				.mustNot(QueryBuilders.termQuery(ID_PROPERTY, modelToIndex.getId()));
		}
		
		SearchRequestBuilder requestBuilderMmsi = ESProvider.getClient().prepareSearch(getIndex()).setTypes(getType())
				.setQuery(mmsiTerm).setSize(1),
		MultiSearchRequest request = new MultiSearchRequest();
		
		SearchSourceBuilder requestBuilderMmsi = new SearchSourceBuilder().query(mmsiTerm).size(1),
				requestBuilderImo = null;
		
		if (imoTerm != null) {
			requestBuilderImo = ESProvider.getClient().prepareSearch(getIndex()).setTypes(getType())
				.setQuery(imoTerm).setSize(1);
			requestBuilderImo = new SearchSourceBuilder().query(imoTerm).size(1);
		}

		MultiSearchRequestBuilder multiSearchRequestBuilder = ESProvider.getClient().prepareMultiSearch()
			.add(requestBuilderMmsi);
		request.add(new SearchRequest().indices(getIndex()).source(requestBuilderMmsi));
		
		if (requestBuilderImo != null) {
			multiSearchRequestBuilder.add(requestBuilderImo);
			request.add(new SearchRequest().indices(getIndex()).source(requestBuilderImo));
		}
		
		MultiSearchResponse sr = multiSearchRequestBuilder.get();
		MultiSearchResponse sr;
		try {
			sr = ESProvider.getClient().msearch(request, RequestOptions.DEFAULT);
		} catch (IOException e) {
			e.printStackTrace();
			throw new ESQueryException();
		}

		// @formatter:on

+38 −25
Original line number Diff line number Diff line
@@ -6,19 +6,22 @@ import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.elasticsearch.action.search.MultiSearchRequestBuilder;
import org.elasticsearch.action.search.MultiSearchRequest;
import org.elasticsearch.action.search.MultiSearchResponse;
import org.elasticsearch.action.search.MultiSearchResponse.Item;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.joda.time.format.DateTimeFormat;
import org.springframework.stereotype.Repository;

import es.redmic.elasticsearchlib.geodata.repository.RWGeoDataESRepository;
import es.redmic.exception.common.ExceptionType;
import es.redmic.exception.elasticsearch.ESQueryException;
import es.redmic.models.es.common.dto.EventApplicationResult;
import es.redmic.models.es.common.query.dto.DataQueryDTO;
import es.redmic.vesselslib.utils.VesselTrackingUtil;
@@ -31,7 +34,7 @@ public class VesselTrackingESRepository extends RWGeoDataESRepository<VesselTrac
		implements IGeoDataRepository<VesselTracking, DataQueryDTO> {

	private static String[] INDEX = { "tracking-vessel" };
	private static String[] TYPE = { "_doc" };
	private static String TYPE = "_doc";

	// @formatter:off
 
@@ -57,8 +60,8 @@ public class VesselTrackingESRepository extends RWGeoDataESRepository<VesselTrac
			doc = jsonBuilder().startObject().field(VESSEL_PROPERTY, objectMapper.convertValue(vessel, Map.class))
					.endObject();
		} catch (IllegalArgumentException | IOException e1) {
			LOGGER.debug("Error modificando el item con id " + vesselTrackingId + " en " + getIndex()[0] + " "
					+ getType()[0]);
			LOGGER.debug(
					"Error modificando el item con id " + vesselTrackingId + " en " + getIndex()[0] + " " + getType());
			return new EventApplicationResult(ExceptionType.ES_UPDATE_DOCUMENT.toString());
		}

@@ -101,19 +104,24 @@ public class VesselTrackingESRepository extends RWGeoDataESRepository<VesselTrac
			uuidTerm = auxTerm;
		}
		
		SearchRequestBuilder requestBuilderId = ESProvider.getClient().prepareSearch(getIndex()).setTypes(getType())
				.setQuery(idTerm).setSize(1),
			requestBuilderMmsi = ESProvider.getClient().prepareSearch(getIndex()).setTypes(getType())
				.setQuery(mmsiTerm).setSize(1),
			requestBuilderUuid = ESProvider.getClient().prepareSearch(getIndex()).setTypes(getType())
				.setQuery(uuidTerm).setSize(1);
		MultiSearchRequest request = new MultiSearchRequest();
		
		MultiSearchRequestBuilder multiSearchRequestBuilder = ESProvider.getClient().prepareMultiSearch()
			.add(requestBuilderId)
			.add(requestBuilderMmsi)
			.add(requestBuilderUuid);
		SearchSourceBuilder requestBuilderId = new SearchSourceBuilder().query(idTerm).size(1),
			requestBuilderMmsi = new SearchSourceBuilder().query(mmsiTerm).size(1),
			requestBuilderUuid = new SearchSourceBuilder().query(uuidTerm).size(1);

		MultiSearchResponse sr = multiSearchRequestBuilder.get();
		request
			.add(new SearchRequest().indices(getIndex()).source(requestBuilderId))
			.add(new SearchRequest().indices(getIndex()).source(requestBuilderMmsi))
			.add(new SearchRequest().indices(getIndex()).source(requestBuilderUuid));
		
		MultiSearchResponse sr;
		try {
			sr = ESProvider.getClient().msearch(request, RequestOptions.DEFAULT);
		} catch (IOException e) {
			e.printStackTrace();
			throw new ESQueryException();
		}
		
		// @formatter:on

@@ -176,23 +184,28 @@ public class VesselTrackingESRepository extends RWGeoDataESRepository<VesselTrac
					.must(QueryBuilders.termQuery(ID_PROPERTY, modelToIndex.getId()))
					.mustNot(QueryBuilders.termQuery(UUID_PROPERTY, modelToIndex.getUuid()));
		
		SearchRequestBuilder requestBuilderMmsi = ESProvider.getClient().prepareSearch(getIndex()).setTypes(getType())
				.setQuery(mmsiTerm).setSize(1),
		MultiSearchRequest request = new MultiSearchRequest();
		
		SearchSourceBuilder requestBuilderMmsi = new SearchSourceBuilder().query(mmsiTerm).size(1),
				requestBuilderId = null;
		
		if (idTerm != null) {
			requestBuilderId = ESProvider.getClient().prepareSearch(getIndex()).setTypes(getType())
				.setQuery(idTerm).setSize(1);
			requestBuilderId = new SearchSourceBuilder().query(idTerm).size(1);
		}

		MultiSearchRequestBuilder multiSearchRequestBuilder = ESProvider.getClient().prepareMultiSearch()
			.add(requestBuilderMmsi);
		request.add(new SearchRequest().indices(getIndex()).source(requestBuilderMmsi));
		
		if (requestBuilderId != null) {
			multiSearchRequestBuilder.add(requestBuilderId);
			request.add(new SearchRequest().indices(getIndex()).source(requestBuilderId));
		}
		
		MultiSearchResponse sr = multiSearchRequestBuilder.get();
		MultiSearchResponse sr;
		try {
			sr = ESProvider.getClient().msearch(request, RequestOptions.DEFAULT);
		} catch (IOException e) {
			e.printStackTrace();
			throw new ESQueryException();
		}

		// @formatter:on

+34 −15
Original line number Diff line number Diff line
package es.redmic.vesselsview.repository.vesseltype;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.elasticsearch.action.search.MultiSearchRequest;
import org.elasticsearch.action.search.MultiSearchResponse;
import org.elasticsearch.action.search.MultiSearchResponse.Item;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.springframework.stereotype.Repository;

import es.redmic.elasticsearchlib.data.repository.RWDataESRepository;
import es.redmic.exception.common.ExceptionType;
import es.redmic.exception.elasticsearch.ESQueryException;
import es.redmic.models.es.common.dto.EventApplicationResult;
import es.redmic.models.es.common.query.dto.SimpleQueryDTO;
import es.redmic.vesselsview.model.vesseltype.VesselType;
@@ -23,7 +28,7 @@ public class VesselTypeESRepository extends RWDataESRepository<VesselType, Simpl
		implements IDataRepository<VesselType, SimpleQueryDTO> {

	private static String[] INDEX = { "platform-domains" };
	private static String[] TYPE = { "vesseltype" };
	private static String TYPE = "vesseltype";

	// @formatter:off
	 
@@ -42,18 +47,25 @@ public class VesselTypeESRepository extends RWDataESRepository<VesselType, Simpl
		QueryBuilder idTerm = QueryBuilders.termQuery(ID_PROPERTY, modelToIndex.getId()),
				codeTerm = QueryBuilders.termQuery(CODE_PROPERTY, modelToIndex.getCode());
		
		SearchRequestBuilder requestBuilderId = ESProvider.getClient().prepareSearch(getIndex()).setTypes(getType())
				.setQuery(idTerm).setSize(1),
			requestBuilderCode = ESProvider.getClient().prepareSearch(getIndex()).setTypes(getType())
				.setQuery(codeTerm).setSize(1);
		MultiSearchRequest request = new MultiSearchRequest();
		
		MultiSearchResponse sr = ESProvider.getClient().prepareMultiSearch()
			.add(requestBuilderId)
			.add(requestBuilderCode)
				.get();
		SearchSourceBuilder requestBuilderId = new SearchSourceBuilder().query(idTerm).size(1),
			requestBuilderCode = new SearchSourceBuilder().query(codeTerm).size(1);

		request
			.add(new SearchRequest().indices(getIndex()).source(requestBuilderId))
			.add(new SearchRequest().indices(getIndex()).source(requestBuilderCode));

		// @formatter:on

		MultiSearchResponse sr;
		try {
			sr = ESProvider.getClient().msearch(request, RequestOptions.DEFAULT);
		} catch (IOException e) {
			e.printStackTrace();
			throw new ESQueryException();
		}

		Map<String, String> arguments = new HashMap<>();

		Item[] responses = sr.getResponses();
@@ -81,15 +93,22 @@ public class VesselTypeESRepository extends RWDataESRepository<VesselType, Simpl
				.must(QueryBuilders.termQuery(CODE_PROPERTY, modelToIndex.getCode()))
				.mustNot(QueryBuilders.termQuery(ID_PROPERTY, modelToIndex.getId()));
		
		SearchRequestBuilder requestBuilderCode = ESProvider.getClient().prepareSearch(getIndex()).setTypes(getType())
				.setQuery(codeTerm).setSize(1);
		MultiSearchRequest request = new MultiSearchRequest();
		
		MultiSearchResponse sr = ESProvider.getClient().prepareMultiSearch()
			.add(requestBuilderCode)
				.get();
		SearchSourceBuilder requestBuilderCode = new SearchSourceBuilder().query(codeTerm).size(1);

		request.add(new SearchRequest().indices(getIndex()).source(requestBuilderCode));

		// @formatter:on

		MultiSearchResponse sr;
		try {
			sr = ESProvider.getClient().msearch(request, RequestOptions.DEFAULT);
		} catch (IOException e) {
			e.printStackTrace();
			throw new ESQueryException();
		}

		Map<String, String> arguments = new HashMap<>();

		Item[] responses = sr.getResponses();
+2 −1
Original line number Diff line number Diff line
@@ -4,7 +4,8 @@ spring.kafka.properties.schema.registry.url=http://redmic.net:18081

#elastic
elastic.addresses=localhost
elastic.port=9301
elastic.port=9201
elastic.secured=false
redmic.elasticsearch.check.mappings=true
redmic.elasticsearch.create.mappings=true

+2 −1
Original line number Diff line number Diff line
@@ -4,7 +4,8 @@ spring.kafka.properties.schema.registry.url=http://schema-registry:8081

#elastic
elastic.addresses=es6-1
elastic.port=9300
elastic.port=9200
elastic.secured=true
redmic.elasticsearch.check.mappings=true
redmic.elasticsearch.create.mappings=true

Loading