liferay пустые результаты поиска путем поиска в пользовательском индексе

#java #elasticsearch #search #liferay #portlet

Вопрос:

я использую liferay 7.3.5 и пытаюсь создать эластичный поиск. Я попытался проиндексировать одну из сущностей, которые у меня есть в базе данных.

Я пошел по Пути обучения на Портале разработчиков, посвященному «Включению поиска и индексации». В этом примере поиск выполняется непосредственно в JSP, который отображает результаты поиска следующим образом…

 SearchContext searchContext = SearchContextFactory .getInstance(request);

searchContext.setKeywords(keywords);
searchContext.setAttribute("paginationType", "more");
searchContext.setStart(0);
searchContext.setEnd(10);

Indexer indexer = IndexerRegistryUtil.getIndexer(Entry.class);

Hits hits = indexer.search(searchContext);
 

Что я сделал, так это перевел этот код в режим Java, чтобы не большая часть Java была включена в JSP

         public void searchEntries(final ActionRequest request, final ActionResponse response) throws PortalException {
                
                HttpServletRequest _request = PortalUtil.getHttpServletRequest(request);    
                SearchContext searchContext = SearchContextFactory.getInstance(_request);               
                String keywords = ParamUtil.getString(request, "keywords");
                searchContext.setKeywords(keywords);
                searchContext.setAttribute("paginationType", "more");
                searchContext.setStart(0);
                searchContext.setEnd(10);
        
                Indexer<MyClassName> indexer = IndexerRegistryUtil.getIndexer(MyClassName.class);
        
                Hits hits = indexer.search(searchContext); 
                 .....
        }
 

Но при поиске я всегда получаю пустые результаты поиска по элементам «Хиты», как показано на рисунке:

{docs={}, длина=0, запрос=null]

Обратите внимание, что процесс индексирования работает хорошо без ошибок, и индекс содержит необходимые документы, как я вижу, используя kibana

В чем же ошибка?

thnx

Комментарии:

1. Почему » HttpServletRequest _request = PortalUtil.getHttpServletRequest(запрос);», а не запрос портлета ?

2. @DanieleBaggio Когда я использую .getInstance () в ** SearchContext searchContext = SearchContextFactory.getInstance(_request) ** Я должен определить ( HttpServletRequest) Я думаю, что это не настоящая причина проблемы

3. Действительно, нет. код кажется тем же самым. Откат к версии jsp и проверка изменений

4. @DanieleBaggio Это не помогло. Мне нужен метод, с помощью которого я могу получить документы, сохраненные в индексе, и вернуть их в элементы обращений