Loading pom.xml +2 −2 Original line number Diff line number Diff line Loading @@ -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> Loading src/main/java/es/redmic/elasticsearchlib/common/query/DataQueryUtils.java +10 −0 Original line number Diff line number Diff line Loading @@ -53,6 +53,8 @@ public abstract class DataQueryUtils extends SimpleQueryUtils { addMustTermIfExist(query, getBBoxQuery(queryDTO.getBbox())); addMustTermIfExist(query, getActivityIdQuery(queryDTO.getActivityId())); return getResultQuery(query); } Loading @@ -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) Loading src/main/java/es/redmic/elasticsearchlib/common/repository/RBaseESRepository.java +10 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading src/main/java/es/redmic/elasticsearchlib/common/utils/ElasticSearchUtils.java +29 −0 Original line number Diff line number Diff line Loading @@ -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) { Loading src/main/java/es/redmic/elasticsearchlib/config/EsClientProvider.java +27 −7 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -41,6 +44,8 @@ public class EsClientProvider { @Value("${elastic.password}") private String password; int timeout = 60000; protected static Logger logger = LogManager.getLogger(); public EsClientProvider() { Loading @@ -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 Loading
pom.xml +2 −2 Original line number Diff line number Diff line Loading @@ -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> Loading
src/main/java/es/redmic/elasticsearchlib/common/query/DataQueryUtils.java +10 −0 Original line number Diff line number Diff line Loading @@ -53,6 +53,8 @@ public abstract class DataQueryUtils extends SimpleQueryUtils { addMustTermIfExist(query, getBBoxQuery(queryDTO.getBbox())); addMustTermIfExist(query, getActivityIdQuery(queryDTO.getActivityId())); return getResultQuery(query); } Loading @@ -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) Loading
src/main/java/es/redmic/elasticsearchlib/common/repository/RBaseESRepository.java +10 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading
src/main/java/es/redmic/elasticsearchlib/common/utils/ElasticSearchUtils.java +29 −0 Original line number Diff line number Diff line Loading @@ -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) { Loading
src/main/java/es/redmic/elasticsearchlib/config/EsClientProvider.java +27 −7 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -41,6 +44,8 @@ public class EsClientProvider { @Value("${elastic.password}") private String password; int timeout = 60000; protected static Logger logger = LogManager.getLogger(); public EsClientProvider() { Loading @@ -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