diff --git a/backend/pom.xml b/backend/pom.xml index c35c1100ff..674d572f4c 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -430,5 +430,10 @@ solr-solrj 10.0.0 + + org.apache.solr + solr-solrj-jetty + 10.0.0 + diff --git a/backend/src/main/java/com/bakdata/conquery/models/config/search/solr/SolrConfig.java b/backend/src/main/java/com/bakdata/conquery/models/config/search/solr/SolrConfig.java index 958e57cce5..7cd2c73658 100644 --- a/backend/src/main/java/com/bakdata/conquery/models/config/search/solr/SolrConfig.java +++ b/backend/src/main/java/com/bakdata/conquery/models/config/search/solr/SolrConfig.java @@ -15,9 +15,9 @@ import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.apache.solr.client.solrj.SolrClient; -import org.apache.solr.client.solrj.impl.ConcurrentUpdateHttp2SolrClient; -import org.apache.solr.client.solrj.impl.Http2SolrClient; import org.apache.solr.client.solrj.impl.HttpJdkSolrClient; +import org.apache.solr.client.solrj.jetty.ConcurrentUpdateJettySolrClient; +import org.apache.solr.client.solrj.jetty.HttpJettySolrClient; import org.apache.solr.client.solrj.request.HealthCheckRequest; import org.apache.solr.common.util.NamedList; @@ -95,24 +95,24 @@ public SolrClient createSearchClient(@Nullable String collection) { public SolrClient createIndexClient(@Nullable String collection) { log.info("Creating solr index client. Base url: {}, Collection: {})", baseSolrUrl, collection); - Http2SolrClient.Builder http2Builder = new Http2SolrClient.Builder(baseSolrUrl) + HttpJettySolrClient.Builder jettyBuilder = new HttpJettySolrClient.Builder(baseSolrUrl) .withConnectionTimeout(connectionTimeout.toSeconds(), TimeUnit.SECONDS) .withRequestTimeout(requestTimeout.toSeconds(), TimeUnit.SECONDS); if (username != null) { - http2Builder.withBasicAuthCredentials(username, password); + jettyBuilder.withBasicAuthCredentials(username, password); } if (useHttp1_1 != null) { - http2Builder.useHttp1_1(useHttp1_1); + jettyBuilder.useHttp1_1(useHttp1_1); } - Http2SolrClient http2Client = http2Builder.build(); + HttpJettySolrClient jettyClient = jettyBuilder.build(); - ConcurrentUpdateHttp2SolrClient.Builder concurrentClientBuilder = new ConcurrentUpdateHttp2SolrClient.Builder(baseSolrUrl, http2Client) - .withDefaultCollection(collection) - .withQueueSize(indexerClientQueueSize) - .withThreadCount(indexerClientThreads); + ConcurrentUpdateJettySolrClient.Builder concurrentClientBuilder = new ConcurrentUpdateJettySolrClient.Builder(baseSolrUrl, jettyClient); + concurrentClientBuilder.withDefaultCollection(collection); + concurrentClientBuilder.withQueueSize(indexerClientQueueSize); + concurrentClientBuilder.withThreadCount(indexerClientThreads); return concurrentClientBuilder.build(); diff --git a/backend/src/main/java/com/bakdata/conquery/util/search/solr/FilterValueIndexer.java b/backend/src/main/java/com/bakdata/conquery/util/search/solr/FilterValueIndexer.java index 24cf8a6bf9..e11d230f8f 100644 --- a/backend/src/main/java/com/bakdata/conquery/util/search/solr/FilterValueIndexer.java +++ b/backend/src/main/java/com/bakdata/conquery/util/search/solr/FilterValueIndexer.java @@ -15,8 +15,8 @@ import com.bakdata.conquery.util.search.solr.entities.SolrFrontendValue; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrServerException; +import org.apache.solr.client.solrj.request.SolrQuery; import org.apache.solr.client.solrj.response.QueryResponse; diff --git a/backend/src/main/java/com/bakdata/conquery/util/search/solr/FilterValueSearch.java b/backend/src/main/java/com/bakdata/conquery/util/search/solr/FilterValueSearch.java index 3160735400..ed3bf4e875 100644 --- a/backend/src/main/java/com/bakdata/conquery/util/search/solr/FilterValueSearch.java +++ b/backend/src/main/java/com/bakdata/conquery/util/search/solr/FilterValueSearch.java @@ -13,13 +13,14 @@ import org.apache.commons.lang3.StringUtils; import org.apache.commons.text.StringSubstitutor; import org.apache.solr.client.solrj.SolrClient; -import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrRequest; import org.apache.solr.client.solrj.SolrServerException; -import org.apache.solr.client.solrj.StreamingResponseCallback; -import org.apache.solr.client.solrj.impl.StreamingBinaryResponseParser; +import org.apache.solr.client.solrj.beans.DocumentObjectBinder; import org.apache.solr.client.solrj.request.QueryRequest; +import org.apache.solr.client.solrj.request.SolrQuery; import org.apache.solr.client.solrj.response.QueryResponse; +import org.apache.solr.client.solrj.response.StreamingJavaBinResponseParser; +import org.apache.solr.client.solrj.response.StreamingResponseCallback; import org.apache.solr.client.solrj.util.ClientUtils; import org.apache.solr.common.SolrDocument; import org.jetbrains.annotations.NotNull; @@ -117,7 +118,7 @@ public AutoCompleteResult topItems(String text, Integer start, @Nullable Integer final StreamingResponseCallback callback = new StreamingResponseCallback() { @Override public void streamSolrDocument(SolrDocument doc) { - SolrFrontendValue bean = solrClient.getBinder().getBean(SolrFrontendValue.class, doc); + SolrFrontendValue bean = DocumentObjectBinder.INSTANCE.getBean(SolrFrontendValue.class, doc); beans.add(bean.toFrontendValue()); } @@ -128,7 +129,7 @@ public void streamDocListInfo(long numFoundCallBack, long start, Float maxScore) }; final QueryRequest request = new QueryRequest(query, SolrRequest.METHOD.POST); - request.setResponseParser(new StreamingBinaryResponseParser(callback)); + request.setResponseParser(new StreamingJavaBinResponseParser(callback)); final QueryResponse response = request.process(solrClient); log.debug("Query [{}] Found: {} | Collected: {} | QTime: {} | ElapsedTime: {}", queryHash, numFound.get(), beans.size(), response.getQTime(), response.getElapsedTime()); @@ -229,7 +230,7 @@ public void streamSolrDocument(SolrDocument doc) { return; } - SolrFrontendValue bean = solrClient.getBinder().getBean(SolrFrontendValue.class, doc); + SolrFrontendValue bean = DocumentObjectBinder.INSTANCE.getBean(SolrFrontendValue.class, doc); // Remove from unresolved and add to resolved values if either value or label matches diff --git a/backend/src/test/java/com/bakdata/conquery/util/search/SolrFilterValueTest.java b/backend/src/test/java/com/bakdata/conquery/util/search/SolrFilterValueTest.java index 9a147d837c..81bf5f4417 100644 --- a/backend/src/test/java/com/bakdata/conquery/util/search/SolrFilterValueTest.java +++ b/backend/src/test/java/com/bakdata/conquery/util/search/SolrFilterValueTest.java @@ -43,8 +43,8 @@ import io.dropwizard.core.setup.Environment; import lombok.SneakyThrows; import org.apache.solr.client.solrj.SolrClient; -import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrServerException; +import org.apache.solr.client.solrj.request.SolrQuery; import org.apache.solr.client.solrj.response.QueryResponse; import org.jetbrains.annotations.NotNull; import org.junit.jupiter.api.BeforeAll;