Expand my Community achievements bar.

AEM Solr integration: Remote Solr as an oak Index issue: “undefined field catch_all”

Avatar

Level 2

I have integrated AEM with remote Solr as, 'Solr as an Oak index' and when running solr queries, I could see all my content indexed and shown into remote Solr.

However when I run some AEM specific jcr queries in AEM for certain search application, In the AEM logs, I could see the request going through to solr to fetch content but the result is empty. In Solr logs following is the stack trace:

2019-02-26 13:09:56.093 ERROR (qtp1514322932-145) [ x:oak] o.a.s.h.RequestHandlerBase org.apache.solr.common.SolrException: undefined field catch_all
  at org.apache.solr.schema.IndexSchema.getDynamicFieldType(IndexSchema.java:1300)
  at org.apache.solr.schema.IndexSchema.getFieldType(IndexSchema.java:1252)
  at org.apache.solr.parser.SolrQueryParserBase.getWildcardQuery(SolrQueryParserBase.java:772)
  at org.apache.solr.parser.SolrQueryParserBase.handleBareTokenQuery(SolrQueryParserBase.java:508)
  at org.apache.solr.parser.QueryParser.Term(QueryParser.java:309)
  at org.apache.solr.parser.QueryParser.Clause(QueryParser.java:180)
  at org.apache.solr.parser.QueryParser.Query(QueryParser.java:101)
  at org.apache.solr.parser.QueryParser.TopLevelQuery(QueryParser.java:90)
  at org.apache.solr.parser.SolrQueryParserBase.parse(SolrQueryParserBase.java:152)
  at org.apache.solr.search.LuceneQParser.parse(LuceneQParser.java:50)
  at org.apache.solr.search.QParser.getQuery(QParser.java:140)

What am i doing wrong here ? Also what is official version of Solr which is supported on these types on integrations.

P.S: I have deleted the default oak index and I am just using the new solr oak index, which is when I are facing this issue.

5 Replies

Avatar

Level 10

Can you show the JCR Queries you are using. Aslo - we are running a session on AEM Queries in 30 mins.

Scott's Digital Community: [Webinar | February ] Ask the AEM Community Expert: Best practice to quer...

Avatar

Level 2

It is for any query we are getting this error.

An example of a query would be:

select [jcr:path], [jcr:score], * from [dam:Asset] as a where not([jcr:content/metadata/hiddenFromSearch] like 'true') and not([jcr:path] like '%/content/dam/test-cmi/locations%') and not([jcr:path] like '%/content/dam/test-cmi/images/slipsheet%') and not([jcr:path] like '%/content/dam/test-cmi/images/cover-art-images%') and not([jcr:path] like '%/content/dam/test-cmi/images/theme-images%') and not([jcr:path] like '%/content/dam/test-cmi/images/general-images%') and not([jcr:path] like '%/content/dam/test-cmi/images/banner-images%') and isdescendantnode(a, '/content/dam/test-cmi')

It seems to me that Solr is not able to get the right content for a given jcr query.

Avatar

Level 10

Seems like there could be an issue setting up SOLR and Indexing. I recommend that you watch this GEMS session where they cover this use case -- Solr as an Oak index for AEM

Avatar

Community Advisor

Hey Ajay,

Looking at the issue you are getting, it looks like you got some mis-config in Solr Schema Definition as dynamic field Solr was expecting to exist did not exist.

Regards,

Peter

Avatar

Level 2

I have done some research on this and found that there are 4 types of Search implementation possible with AEM:

Plain old oak
Solr embedded in Oak
Solr as an remote oak index
Solr - AEM restful integration.

Of all the four, the only recommended way by Adobe is the last one.