Selecting more than 20 categories in the product filter gives the ElasticsearchStatusException
Pooja Bhambani
更新
Issue
Steps to reproduce: 1. Start Liferay DXP 7.4 2. Navigate to the Global Site > Categorization > Categories. 3. Create more than 20 categories. 4. Now, navigate to Products > Click on FILTERS. 5. Select all the created filters. Expected Result: It'll filter the product and no exception must be thrown in the console. Actual Result: While selecting all filters, it's throwing the below elastic search exception:
2023-02-24 12:41:13.479 ERROR [http-nio-8080-exec-2][ElasticsearchIndexSearcher:164] null
java.lang.RuntimeException: org.elasticsearch.ElasticsearchStatusException: ElasticsearchStatusException[Elasticsearch exception [type=x_content_parse_exception, reason=[1:508] [bool] failed to parse field [must]]]; nested: ElasticsearchException[Elasticsearch exception [type=x_content_parse_exception, reason=[1:508] [bool] failed to parse field [must]]]; nested: ElasticsearchException[Elasticsearch exception [type=x_content_parse_exception, reason=[1:508] [bool] failed to parse field [filter]]]; nested: ElasticsearchException[Elasticsearch exception [type=x_content_parse_exception, reason=[1:508] [bool] failed to parse field [must]]]; nested: ElasticsearchException[Elasticsearch exception [type=x_content_parse_exception, reason=[1:508] [bool] failed to parse field [should]]]; nested: ElasticsearchException[Elasticsearch exception [type=x_content_parse_exception, reason=[1:508] [bool] failed to parse field [should]]]; nested: ElasticsearchException[Elasticsearch exception [type=x_content_parse_exception, reason=[1:508] [bool] failed to parse field [should]]]; nested: ElasticsearchException[Elasticsearch exception [type=x_content_parse_exception, reason=[1:508] [bool] failed to parse field [should]]]; nested:
Environment
Liferay DXP 7.4
Commerce 4.0
Resolution
This issue is observed due to the search having too many search terms.
In order to mitigate the elastic search issue, the user can try to increase the limit of the indices.query.bool.max_nested_depth property. However, a higher value can result in performance degradation and stack overflow.