0

Following is the code that I have written from Solr Documentation (Solrj tab) I believe the getSolrClient method has following implementation:

String solrUrl = solrServerUrl.concat("test-core");
final SolrClient client = new HttpSolrClient.Builder(solrUrl).build();

But on this line, I am getting this error:

java.lang.NoClassDefFoundError: org/apache/solr/client/solrj/impl/HttpSolrClient$Builder

I am using maven and the dependency for Spring Solr Data is:

<!-- Spring Solr data-->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-solr</artifactId>
            <version>2.1.9.RELEASE</version>
        </dependency>

And for the Solrj, I have dependency:

<!-- Solr -->
        <dependency>
            <groupId>org.apache.solr</groupId>
            <artifactId>solr-solrj</artifactId>
            <version>7.7.1</version>
        </dependency>

Although I am getting a warning on this version of Solrj saying "Overriding managed version 5.5.5 for solr-solrj"

SolrInputDocument issue:

In the same documentation, I am trying to make an instance of SolrInputDocument as:
SolrInputDocument p1 = new SolrInputDocument();

But I am getting error as:

java.lang.NoSuchMethodError: org.apache.solr.common.SolrInputDocument.<init>([Ljava/lang/String;)V

I think both of the issues are maybe related to each other that's why mentioned them in the same question.

Following is my code where I am trying to post Nested Documents in Solr:

            String solrUrl = solrServerUrl.concat("test-core");

            final SolrClient client = new HttpSolrClient.Builder(solrUrl).build();

            SolrInputDocument p1 = new SolrInputDocument();
            p1.setField("id", "P11!prod");
            p1.setField("name_s", "Swingline Stapler");
            p1.setField("description_t", "The Cadillac of office staplers ...");
            {
              final SolrInputDocument s1 = new SolrInputDocument();
              s1.setField("id", "P11!S21");
              s1.setField("color_s", "RED");
              s1.setField("price_i", 42);
              {
                final SolrInputDocument m1 = new SolrInputDocument();
                m1.setField("id", "P11!D41");
                m1.setField("name_s", "Red Swingline Brochure");
                m1.setField("pages_i", 1);
                m1.setField("content_t", "...");

                s1.setField("manuals", m1);
              }

              final SolrInputDocument s2 = new SolrInputDocument();
              s2.setField("id", "P11!S31");
              s2.setField("color_s", "BLACK");
              s2.setField("price_i", 3);

              p1.setField("skus", Arrays.asList(s1, s2));
            }
            {
              final SolrInputDocument m1 = new SolrInputDocument();
              m1.setField("id", "P11!D51");
              m1.setField("name_s", "Quick Reference Guide");
              m1.setField("pages_i", 1);
              m1.setField("content_t", "How to use your stapler ...");

              final SolrInputDocument m2 = new SolrInputDocument();
              m2.setField("id", "P11!D61");
              m2.setField("name_s", "Warranty Details");
              m2.setField("pages_i", 42);
              m2.setField("content_t", "... lifetime guarantee ...");

              p1.setField("manuals", Arrays.asList(m1, m2));
            }

            final SolrInputDocument p2 = new SolrInputDocument();
            p2.setField("id", "P22!prod");
            p2.setField("name_s", "Mont Blanc Fountain Pen");
            p2.setField("description_t", "A Premium Writing Instrument ...");
            {
              final SolrInputDocument s1 = new SolrInputDocument();
              s1.setField("id", "P22!S22");
              s1.setField("color_s", "RED");
              s1.setField("price_i", 89);
              {
                final SolrInputDocument m1 = new SolrInputDocument();
                m1.setField("id", "P22!D42");
                m1.setField("name_s", "Red Mont Blanc Brochure");
                m1.setField("pages_i", 1);
                m1.setField("content_t", "...");

                s1.setField("manuals", m1);
              }

              final SolrInputDocument s2 = new SolrInputDocument();
              s2.setField("id", "P22!S32");
              s2.setField("color_s", "BLACK");
              s2.setField("price_i", 67);

              p2.setField("skus", Arrays.asList(s1, s2));
            }
            {
              final SolrInputDocument m1 = new SolrInputDocument();
              m1.setField("id", "P22!D52");
              m1.setField("name_s", "How To Use A Pen");
              m1.setField("pages_i", 42);
              m1.setField("content_t", "Start by removing the cap ...");

              p2.setField("manuals", m1);
            }

            client.add(Arrays.asList(p1, p2));
Dragon
  • 25
  • 4
  • You're using a _very old version_ of spring-data-solr, which depends on and of solr-solrj 5.5.x; upgrade these dependencies to their new versions unless you have a (very) good reason to keep them that way. You're referencing documentation from Solr 8, but are using a 5.x client, and are trying to manually add a 7.x-client. Bring everything up to their newer versions. – MatsLindh Feb 21 '23 at 11:58

0 Answers0