Commit 2d50805b authored by Noel Alonso's avatar Noel Alonso
Browse files

Merge branch 'dev' into 'master'

Aumenta versión

See merge request redmic-project/server/library/elasticsearch-lib!4
parents d21ec4fc 8ce364dc
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -13,7 +13,7 @@
	<groupId>es.redmic.lib</groupId>
	<artifactId>elasticsearch-lib</artifactId>
	<packaging>jar</packaging>
	<version>0.8.0</version>
	<version>0.9.0</version>
	<name>elasticsearch-lib</name>

	<properties>
@@ -24,8 +24,8 @@
		<java.version>1.8</java.version>

		<!-- REDMIC -->
		<redmic.exceptions.version>0.7.0</redmic.exceptions.version>
		<redmic.models.version>0.8.0</redmic.models.version>
		<redmic.exceptions.version>0.8.0</redmic.exceptions.version>
		<redmic.models.version>0.9.1</redmic.models.version>

		<!-- Others -->
		<commons-io.version>1.3.2</commons-io.version>
+10 −0
Original line number Diff line number Diff line
@@ -53,6 +53,8 @@ public abstract class DataQueryUtils extends SimpleQueryUtils {

		addMustTermIfExist(query, getBBoxQuery(queryDTO.getBbox()));

		addMustTermIfExist(query, getActivityIdQuery(queryDTO.getActivityId()));

		return getResultQuery(query);
	}

@@ -68,6 +70,14 @@ public abstract class DataQueryUtils extends SimpleQueryUtils {
		return null;
	}

	protected static QueryBuilder getActivityIdQuery(String activityId) {

		if (activityId == null)
			return null;

		return QueryBuilders.termQuery("activityId", activityId);
	}

	protected static QueryBuilder getPrecisionQuery(PrecisionQueryDTO precision) {

		if (precision == null)
+10 −1
Original line number Diff line number Diff line
@@ -97,7 +97,7 @@ public abstract class RBaseESRepository<TModel extends BaseES<?>, TQueryDTO exte

	protected Integer SUGGESTSIZE = 10;

	protected Integer MAX_SIZE = 100000;
	protected Integer MAX_SIZE = 10000;

	@Autowired
	protected ObjectMapper objectMapper;
@@ -275,6 +275,15 @@ public abstract class RBaseESRepository<TModel extends BaseES<?>, TQueryDTO exte
		return responses[0].isFailure() && responses[0].getFailure().getMessage().contains("no such index");
	}

	/*
	 * Función para obtener el índice a partir del indice original + un campo de los
	 * datos Solo en series temporales, en otros casos, devolver directamente el
	 * índice.
	 */
	protected String getIndex(TModel modelToIndex) {
		return getIndex()[0];
	}

	protected abstract JavaType getSourceType(Class<?> wrapperClass);

	protected GetResponse getRequest(String id) {
+29 −0
Original line number Diff line number Diff line
@@ -236,6 +236,35 @@ public class ElasticSearchUtils {
		return null;
	}

	/**
	 * Función para extraer las estadísticas del resultado de la agregación
	 * 
	 * @param obj:
	 *            Resultado de la agregación
	 * @param key:
	 *            clave del map donde se encuentran las estadísticas (debe estar a
	 *            primer nivel)
	 * @param clazz:
	 *            clase donde mapear los datos
	 * 
	 * @return Objeto de tipo clazz con los datos de las estadísticas.
	 */
	public static Object getStatsFromAggregation(Map<String, Object> obj, String key, Class<?> clazz) {

		try {
			return jMapper.readValue(jMapper.writeValueAsString(getMapValue(obj, key)), clazz);
		} catch (IOException e) {
			e.printStackTrace();
			return null;
		}
	}

	@SuppressWarnings("unchecked")
	public static Map<String, Object> getMapValue(Map<String, Object> obj, String key) {

		return (Map<String, Object>) obj.get(key);
	}

	// TODO: realizar esta acción dependiendo del tipo de modelo. Solo añadir si
	// es necesario
	public static String[] getReturnFields(List<String> fields) {
+27 −7
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
import org.apache.logging.log4j.LogManager;
@@ -18,7 +19,9 @@ import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequest;
import org.elasticsearch.action.admin.cluster.health.ClusterHealthResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestClientBuilder.HttpClientConfigCallback;
import org.elasticsearch.client.RestClientBuilder.RequestConfigCallback;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.cluster.health.ClusterHealthStatus;
import org.springframework.beans.factory.annotation.Value;
@@ -41,6 +44,8 @@ public class EsClientProvider {
	@Value("${elastic.password}")
	private String password;

	int timeout = 60000;

	protected static Logger logger = LogManager.getLogger();

	public EsClientProvider() {
@@ -65,15 +70,30 @@ public class EsClientProvider {
		final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
		credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(user, password));

		client = new RestHighLevelClient(
				RestClient.builder(hosts).setHttpClientConfigCallback(new HttpClientConfigCallback() {
		client = new RestHighLevelClient(RestClient.builder(hosts).setRequestConfigCallback(getRequestConfigCallback())
				.setMaxRetryTimeoutMillis(timeout)
				.setHttpClientConfigCallback(getHttpClientConfigCallback(credentialsProvider)));

		checkClusterHealth();
	}

	private RequestConfigCallback getRequestConfigCallback() {

		return new RestClientBuilder.RequestConfigCallback() {
			@Override
			public RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder requestConfigBuilder) {
				return requestConfigBuilder.setSocketTimeout(timeout);
			}
		};
	}

	private HttpClientConfigCallback getHttpClientConfigCallback(CredentialsProvider credentialsProvider) {
		return new HttpClientConfigCallback() {
			@Override
			public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
				return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
			}
				}));

		checkClusterHealth();
		};
	}

	private void checkClusterHealth() {
Loading