Put elastic search index into the configurations

This commit is contained in:
George Kalampokis 2021-04-27 16:53:15 +03:00
parent 77bcb95ad7
commit 501ca9fcc2
5 changed files with 26 additions and 16 deletions

View File

@ -26,6 +26,7 @@ import org.elasticsearch.search.aggregations.bucket.nested.ParsedNested;
import org.elasticsearch.search.builder.SearchSourceBuilder; import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.IOException; import java.io.IOException;
@ -37,10 +38,12 @@ import java.util.stream.Stream;
public class DatasetRepository extends ElasticRepository<Dataset, DatasetCriteria> { public class DatasetRepository extends ElasticRepository<Dataset, DatasetCriteria> {
private final DmpRepository dmpRepository; private final DmpRepository dmpRepository;
private final Environment environment;
public DatasetRepository(RestHighLevelClient client, DmpRepository dmpRepository) { public DatasetRepository(RestHighLevelClient client, DmpRepository dmpRepository, Environment environment) {
super(client); super(client);
this.dmpRepository = dmpRepository; this.dmpRepository = dmpRepository;
this.environment = environment;
} }
@Override @Override
@ -64,7 +67,7 @@ public class DatasetRepository extends ElasticRepository<Dataset, DatasetCriteri
} }
dmp.getDatasets().add(entity); dmp.getDatasets().add(entity);
} }
IndexRequest request = new IndexRequest("dmps").id(dmp.getId().toString()).source(dmp.toElasticEntity(builder));//new IndexRequest("datasets", "doc", entity.getId()).source(entity.toElasticEntity(builder)); IndexRequest request = new IndexRequest(this.environment.getProperty("elasticsearch.index")).id(dmp.getId().toString()).source(dmp.toElasticEntity(builder));//new IndexRequest("datasets", "doc", entity.getId()).source(entity.toElasticEntity(builder));
this.getClient().index(request, RequestOptions.DEFAULT); this.getClient().index(request, RequestOptions.DEFAULT);
return entity; return entity;
} }
@ -74,7 +77,7 @@ public class DatasetRepository extends ElasticRepository<Dataset, DatasetCriteri
@Override @Override
public Dataset findDocument(String id) throws IOException { public Dataset findDocument(String id) throws IOException {
if (this.getClient() != null) { if (this.getClient() != null) {
SearchRequest searchRequest = new SearchRequest("dmps"); SearchRequest searchRequest = new SearchRequest(this.environment.getProperty("elasticsearch.index"));
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery().should(QueryBuilders.termQuery("datasets.id.keyword", id)); BoolQueryBuilder boolQuery = QueryBuilders.boolQuery().should(QueryBuilders.termQuery("datasets.id.keyword", id));
NestedQueryBuilder nestedQueryBuilder = QueryBuilders.nestedQuery( "datasets", boolQuery, ScoreMode.Avg).innerHit(new InnerHitBuilder()); NestedQueryBuilder nestedQueryBuilder = QueryBuilders.nestedQuery( "datasets", boolQuery, ScoreMode.Avg).innerHit(new InnerHitBuilder());
@ -95,7 +98,7 @@ public class DatasetRepository extends ElasticRepository<Dataset, DatasetCriteri
@Override @Override
public List<Dataset> query(DatasetCriteria criteria) throws IOException { public List<Dataset> query(DatasetCriteria criteria) throws IOException {
if (this.getClient() != null) { if (this.getClient() != null) {
SearchRequest searchRequest = new SearchRequest("dmps"); SearchRequest searchRequest = new SearchRequest(this.environment.getProperty("elasticsearch.index"));
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
/*CountRequest countRequest = new CountRequest("dmps").routing("datasets").routing("id"); /*CountRequest countRequest = new CountRequest("dmps").routing("datasets").routing("id");
@ -103,7 +106,7 @@ public class DatasetRepository extends ElasticRepository<Dataset, DatasetCriteri
CountResponse countResponse = getClient().count(countRequest, RequestOptions.DEFAULT); CountResponse countResponse = getClient().count(countRequest, RequestOptions.DEFAULT);
Long count = countResponse.getCount();*/ Long count = countResponse.getCount();*/
SearchRequest countRequest = new SearchRequest("dmps"); SearchRequest countRequest = new SearchRequest(this.environment.getProperty("elasticsearch.index"));
NestedAggregationBuilder nestedAggregationBuilder = AggregationBuilders.nested("by_dataset", "datasets"); NestedAggregationBuilder nestedAggregationBuilder = AggregationBuilders.nested("by_dataset", "datasets");
FiltersAggregationBuilder filtersAggregationBuilder = AggregationBuilders.filters("dataset_query", QueryBuilders.boolQuery().mustNot(QueryBuilders.termsQuery("datasets.status.keyword", Stream.of(Dataset.Status.DELETED.getValue(), Dataset.Status.CANCELED.getValue()).collect(Collectors.toList())))); FiltersAggregationBuilder filtersAggregationBuilder = AggregationBuilders.filters("dataset_query", QueryBuilders.boolQuery().mustNot(QueryBuilders.termsQuery("datasets.status.keyword", Stream.of(Dataset.Status.DELETED.getValue(), Dataset.Status.CANCELED.getValue()).collect(Collectors.toList()))));
nestedAggregationBuilder.subAggregation(filtersAggregationBuilder); nestedAggregationBuilder.subAggregation(filtersAggregationBuilder);
@ -193,7 +196,7 @@ public class DatasetRepository extends ElasticRepository<Dataset, DatasetCriteri
@Override @Override
public boolean exists() throws IOException { public boolean exists() throws IOException {
if (this.getClient() != null) { if (this.getClient() != null) {
GetIndexRequest request = new GetIndexRequest("dmps"); GetIndexRequest request = new GetIndexRequest(this.environment.getProperty("elasticsearch.index"));
// request.indices("datasets"); // request.indices("datasets");
return this.getClient().indices().exists(request, RequestOptions.DEFAULT); return this.getClient().indices().exists(request, RequestOptions.DEFAULT);
} }

View File

@ -26,6 +26,7 @@ import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.IOException; import java.io.IOException;
@ -37,9 +38,12 @@ import java.util.stream.Stream;
public class DmpRepository extends ElasticRepository<Dmp, DmpCriteria> { public class DmpRepository extends ElasticRepository<Dmp, DmpCriteria> {
private static final Logger logger = LoggerFactory.getLogger(DmpRepository.class); private static final Logger logger = LoggerFactory.getLogger(DmpRepository.class);
private final Environment environment;
@Autowired @Autowired
public DmpRepository(RestHighLevelClient client) { public DmpRepository(RestHighLevelClient client, Environment environment) {
super(client); super(client);
this.environment = environment;
} }
private void generateMapping() throws IOException { private void generateMapping() throws IOException {
@ -52,7 +56,7 @@ public class DmpRepository extends ElasticRepository<Dmp, DmpCriteria> {
builder.endObject(); builder.endObject();
builder.endObject(); builder.endObject();
builder.endObject(); builder.endObject();
PutMappingRequest putMappingRequest = new PutMappingRequest("dmps"); PutMappingRequest putMappingRequest = new PutMappingRequest(this.environment.getProperty("elasticsearch.index"));
putMappingRequest.source(builder); putMappingRequest.source(builder);
this.getClient().indices().putMapping(putMappingRequest, RequestOptions.DEFAULT); this.getClient().indices().putMapping(putMappingRequest, RequestOptions.DEFAULT);
} }
@ -62,7 +66,7 @@ public class DmpRepository extends ElasticRepository<Dmp, DmpCriteria> {
public Dmp createOrUpdate(Dmp entity) throws IOException { public Dmp createOrUpdate(Dmp entity) throws IOException {
if (this.getClient() != null) { if (this.getClient() != null) {
XContentBuilder builder = XContentFactory.jsonBuilder(); XContentBuilder builder = XContentFactory.jsonBuilder();
IndexRequest request = new IndexRequest("dmps").id(entity.getId().toString()).source(entity.toElasticEntity(builder)); IndexRequest request = new IndexRequest(this.environment.getProperty("elasticsearch.index")).id(entity.getId().toString()).source(entity.toElasticEntity(builder));
IndexResponse response = this.getClient().index(request, RequestOptions.DEFAULT); IndexResponse response = this.getClient().index(request, RequestOptions.DEFAULT);
return entity; return entity;
} }
@ -72,7 +76,7 @@ public class DmpRepository extends ElasticRepository<Dmp, DmpCriteria> {
@Override @Override
public Dmp findDocument(String id) throws IOException { public Dmp findDocument(String id) throws IOException {
if (this.getClient() != null) { if (this.getClient() != null) {
GetRequest request = new GetRequest("dmps", id); GetRequest request = new GetRequest(this.environment.getProperty("elasticsearch.index"), id);
GetResponse response = this.getClient().get(request, RequestOptions.DEFAULT); GetResponse response = this.getClient().get(request, RequestOptions.DEFAULT);
return new Dmp().fromElasticEntity(response.getSourceAsMap()); return new Dmp().fromElasticEntity(response.getSourceAsMap());
} }
@ -82,10 +86,10 @@ public class DmpRepository extends ElasticRepository<Dmp, DmpCriteria> {
@Override @Override
public List<Dmp> query(DmpCriteria criteria) throws IOException { public List<Dmp> query(DmpCriteria criteria) throws IOException {
if (this.getClient() != null) { if (this.getClient() != null) {
SearchRequest searchRequest = new SearchRequest("dmps"); SearchRequest searchRequest = new SearchRequest(this.environment.getProperty("elasticsearch.index"));
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
CountRequest countRequest = new CountRequest("dmps"); CountRequest countRequest = new CountRequest(this.environment.getProperty("elasticsearch.index"));
countRequest.query(QueryBuilders.boolQuery().mustNot(QueryBuilders.termsQuery(Dmp.MapKey.STATUS.getName(), Collections.singletonList(Dmp.DMPStatus.DELETED.getValue())))); countRequest.query(QueryBuilders.boolQuery().mustNot(QueryBuilders.termsQuery(Dmp.MapKey.STATUS.getName(), Collections.singletonList(Dmp.DMPStatus.DELETED.getValue()))));
CountResponse countResponse = getClient().count(countRequest, RequestOptions.DEFAULT); CountResponse countResponse = getClient().count(countRequest, RequestOptions.DEFAULT);
Long count = countResponse.getCount(); Long count = countResponse.getCount();
@ -152,7 +156,7 @@ public class DmpRepository extends ElasticRepository<Dmp, DmpCriteria> {
public boolean createIndex() { public boolean createIndex() {
try { try {
if (!this.exists()) { if (!this.exists()) {
CreateIndexRequest createIndexRequest = new CreateIndexRequest("dmps"); CreateIndexRequest createIndexRequest = new CreateIndexRequest(this.environment.getProperty("elasticsearch.index"));
this.getClient().indices().create(createIndexRequest, RequestOptions.DEFAULT); this.getClient().indices().create(createIndexRequest, RequestOptions.DEFAULT);
this.generateMapping(); this.generateMapping();
} }
@ -166,7 +170,7 @@ public class DmpRepository extends ElasticRepository<Dmp, DmpCriteria> {
@Override @Override
public boolean exists() throws IOException { public boolean exists() throws IOException {
if (this.getClient() != null) { if (this.getClient() != null) {
GetIndexRequest request = new GetIndexRequest("dmps"); GetIndexRequest request = new GetIndexRequest(this.environment.getProperty("elasticsearch.index"));
return this.getClient().indices().exists(request, RequestOptions.DEFAULT); return this.getClient().indices().exists(request, RequestOptions.DEFAULT);
} }
return false; return false;
@ -175,10 +179,10 @@ public class DmpRepository extends ElasticRepository<Dmp, DmpCriteria> {
@Override @Override
public void clear() throws IOException { public void clear() throws IOException {
if (exists()) { if (exists()) {
DeleteByQueryRequest delete = new DeleteByQueryRequest("dmps"); DeleteByQueryRequest delete = new DeleteByQueryRequest(this.environment.getProperty("elasticsearch.index"));
delete.setQuery(QueryBuilders.matchAllQuery()); delete.setQuery(QueryBuilders.matchAllQuery());
this.getClient().deleteByQuery(delete, RequestOptions.DEFAULT); this.getClient().deleteByQuery(delete, RequestOptions.DEFAULT);
DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest("dmps"); DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest(this.environment.getProperty("elasticsearch.index"));
this.getClient().indices().delete(deleteIndexRequest, RequestOptions.DEFAULT); this.getClient().indices().delete(deleteIndexRequest, RequestOptions.DEFAULT);
} }
} }

View File

@ -13,6 +13,7 @@ elasticsearch.host = localhost
elasticsearch.port = 9200 elasticsearch.port = 9200
elasticsearch.username=elastic elasticsearch.username=elastic
elasticsearch.password= elasticsearch.password=
elasticsearch.index=dmps
####################ELK OVERRIDES CONFIGURATIONS########## ####################ELK OVERRIDES CONFIGURATIONS##########
http-logger.server-address = http://localhost:31311 http-logger.server-address = http://localhost:31311

View File

@ -10,6 +10,7 @@ elasticsearch.host = tags-elastic-search
elasticsearch.port = 9200 elasticsearch.port = 9200
elasticsearch.username=elastic elasticsearch.username=elastic
elasticsearch.password= elasticsearch.password=
elasticsearch.index=dmps
####################PDF OVERRIDES CONFIGURATIONS########## ####################PDF OVERRIDES CONFIGURATIONS##########
pdf.converter.url=http://docsbox-web/ pdf.converter.url=http://docsbox-web/

View File

@ -10,6 +10,7 @@ elasticsearch.host = tags-elastic-search
elasticsearch.port = 9200 elasticsearch.port = 9200
elasticsearch.username=elastic elasticsearch.username=elastic
elasticsearch.password= elasticsearch.password=
elasticsearch.index=dmps
####################PDF OVERRIDES CONFIGURATIONS########## ####################PDF OVERRIDES CONFIGURATIONS##########
pdf.converter.url=http://docsbox-web/ pdf.converter.url=http://docsbox-web/