Question
How to change the number of records returned from a work object search/how to configure ElastiSearch?
Summary
- I'm working in 7.1.8
- I’m trying to specify the behavior of the new-style search for work objects from the Find Work Gadget
- My immediate need is to change the number of results returned from the default limit of 1,000.
- I don’t see a system setting for this
- I don’t see where I could pass a parameter
- And I’m running into a wall of Final rules and opaque system behavior
Details
- I enter search criteria that match 1,200 records into the Find Work Gadget (the rule name is FindWorkGadget) and press Enter
- the FindWorkGadget initially returns 20 results
- from that initial resultset, I click "See All Results" to see more
- Pega pops up a new window with 1,000 results
- For searches matching more than 1,000 records, I get the message "Showing first 1000 of 8667 work object matches. Try a more specific search."
I’m sure that’s a reasonable limitation in many cases. However, it’s not a useful limit in my application.
Question: where can I modify the 1,000 record limit?
Here’s what I have looked at:
FindWorkGadget
Summary
- I'm working in 7.1.8
- I’m trying to specify the behavior of the new-style search for work objects from the Find Work Gadget
- My immediate need is to change the number of results returned from the default limit of 1,000.
- I don’t see a system setting for this
- I don’t see where I could pass a parameter
- And I’m running into a wall of Final rules and opaque system behavior
Details
- I enter search criteria that match 1,200 records into the Find Work Gadget (the rule name is FindWorkGadget) and press Enter
- the FindWorkGadget initially returns 20 results
- from that initial resultset, I click "See All Results" to see more
- Pega pops up a new window with 1,000 results
- For searches matching more than 1,000 records, I get the message "Showing first 1000 of 8667 work object matches. Try a more specific search."
I’m sure that’s a reasonable limitation in many cases. However, it’s not a useful limit in my application.
Question: where can I modify the 1,000 record limit?
Here’s what I have looked at:
FindWorkGadget
The OOTB MgrTopPanel includes the gadget FindWorkGadget. I can specify the style of search behavior for FindWorkGadget by supplying a parameter. OOTB, the search style is "V6Search", which is what I want. So far, so good. But then this path ends.
- Neither of the parameters for FindWorkGadget concern the limit of results returned
- FindWorkGadget is Final and is the beginning of a series of Final rules and opaque function calls like pega.ui.gadget.FindWork.SearchforWork
System Settings and Dynamic System Settings
I used the very scientific method of looking at all settings with a value of 20 or 1,000. None of them appear to control the numbers of results I mentioned above.
ListView pySearchResultsWork
The FindWorkGadget initially executes ListView Pega-Search-Work-Results.pySearchResultsWork.
- pySearchResultsWork has a maximum results value of 500, so clearly it's being ignored/overridden
- I tried specifying paging. That was the behavior in the earlier version of my application, running on 6.1. Paging also appears to be ignored.
- the get content activity is pzSearchResultsWork
Activity pzSearchResultsWork
- The limit on initial results from the FindWorkGadget appears to be hard-coded to 20 by step 3 of pzSearchResultsWork, which sets .pyMaxWork = 20
- I don't see a parameter that specifies the 1,000 record limit
- I do see this, also in step 3: .pyAllResults set to param.allResults
- pyAllResults is a flag. In the tracer, param.allResults is TRUE everywhere I've found it.
- I gather that the meaning of “All” results means “All results up to the 1000-record limit specified somewhere”
- Step 16 does the search by calling Pega-Search-Work-Param.pzSearchWork
Activity Pega-Search-Work-Param.pzSearchWork
I'm not quite sure which step does the search. in the Tracer, I have seen a SOAP call. In step 4 of this activity, I see a Connect-HTTP to call pySearchHTTPConnectWork
ListView pySearchResultsWorkFull
When I click “See All Results” and watch the Tracer, I eventually see the ListView pySearchResultsWorkFull is run. It calls the same get content activity "pySearchResultsWork", which I have already looked at.
Search Service
I haven’t found a way to dig further into the details.
Bottom line
- I don't see anywhere that I can change the 1,000-record limit on work object search results
- Paging appears to be ignored
- I get the sense that the records limit is buried somewhere in the workings of Elastisearch
Does anyone know how I can configure the limit?
As I said above, the max records limit is my immediate concern. If there are additional parameters/settings I can supply, I would be eager to learn of any reference material on the subject.
Hi Elliott,
The limit of 1000 is a purposeful limit set to keep resources in check for search results and is hardcoded in the code for full text search. This cannot be modified or altered as of now.
We would like to understand the use case, in further detail, where so many results are definitely needed (Do you really want to display all these results?).
-Rajiv