Support Article
Search does not display result
SA-105684
Summary
Search fails to obtain results despite healthy indexes.
Error Messages
Search request failed. Query: [*AMT*], Index [work-vm-km-work*]
Caused by: java.lang.IllegalArgumentException: No field found for [_m_CBRTeamList] in mapping with types [def]
at org.elasticsearch.search.lookup.LeafDocLookup.get(LeafDocLookup.java:77) ~[elasticsearch-5.6.9.jar:?]
at org.elasticsearch.search.lookup.LeafDocLookup.get(LeafDocLookup.java:36) ~[elasticsearch-5.6.9.jar:?]
at org.elasticsearch.painless.PainlessScript$Script.execute(native_oneof_script:28) ~[?:?]
at org.elasticsearch.painless.ScriptImpl.run(ScriptImpl.java:133) ~[lang-painless-5.6.9.jar:?]
at org.elasticsearch.index.query.ScriptQueryBuilder$ScriptQuery$1$1.get(ScriptQueryBuilder.java:186) ~[elasticsearch-5.6.9.jar:?]
at org.apache.lucene.search.RandomAccessWeight$1.matches(RandomAccessWeight.java:63) ~[lucene-core-6.6.1.jar:?]
at org.apache.lucene.search.DisjunctionScorer$TwoPhase.getSubMatches(DisjunctionScorer.java:109) ~[lucene-core-6.6.1.jar:?]
at org.apache.lucene.search.DisjunctionScorer.getSubMatches(DisjunctionScorer.java:174) ~[lucene-core-6.6.1.jar:?]
at org.apache.lucene.search.DisjunctionScorer.score(DisjunctionScorer.java:190) ~[lucene-core-6.6.1.jar:?]
Steps to Reproduce
- Add a content article with words in the body.
- Publish the solution.
- Searching for the solution.
Root Cause
A defect in Pegasystems’ code or rules.
Attribute-based Access Control (ABAC) policy condition is applied on work class instances that are searched. The Elasticsearch Search query has additional filters if ABAC is enabled on the work class.
After enabling the Elasticsearch debugging, the exception message indicates that the mapping for the ABAC property is not created in the index. This occurs when none of the work instances of this class have this value populated (Pega creates a property mapping on the index only when it encounters an instance with a non-empty value for the first time).
Resolution
Perform the following local-change:
Populate a value in one of the instances which belong to the class type to generate Elasticsearch mapping when indexing the instance.
Published August 12, 2020 - Updated December 2, 2021
Have a question? Get answers now.
Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.