2013-06-03 3 views
0

Это в последующем наблюдении на этот вопрос Grails elasticsearch plugin with "text" mappingЭластичные поиска + Grails метание NPE

Я последовал шаги, приведенные в ответе, и теперь следующий NPE брошен. Кроме того, если я открываю индекс Lucene с помощью Луки, то я не вижу каких-либо документов в нем ..

Хотя при перезапуске сервера приложений дает мне следующие отладочные сообщения

2013-06-03 16:20:49,364 [localhost-startStop-1] DEBUG mapping.SearchableClassMappingConfigurator - Retrieved index settings 
2013-06-03 16:20:49,365 [localhost-startStop-1] DEBUG mapping.SearchableClassMappingConfigurator - Installing mappings... 
2013-06-03 16:20:49,370 [localhost-startStop-1] DEBUG mapping.SearchableClassMappingConfigurator - Index com.ecw.wellness does not exists, initiating creation... 
2013-06-03 16:20:49,370 [localhost-startStop-1] DEBUG mapping.SearchableClassMappingConfigurator - Waiting at least yellow status on com.ecw.wellness ... 
2013-06-03 16:21:19,869 [localhost-startStop-1] DEBUG mapping.SearchableClassMappingConfigurator - {com_ecw_wellness_answer={properties={answer={type=string, include_in_all=true, term_vector=with_positions_offsets}, votes={type=object}, dateCreated={type=date, include_in_all=true}, lastUpdated={type=date, include_in_all=true}, question={type=object}}}} 
2013-06-03 16:21:19,869 [localhost-startStop-1] DEBUG mapping.SearchableClassMappingConfigurator - [com_ecw_wellness_answer] => {com_ecw_wellness_answer={properties={answer={type=string, include_in_all=true, term_vector=with_positions_offsets}, votes={type=object}, dateCreated={type=date, include_in_all=true}, lastUpdated={type=date, include_in_all=true}, question={type=object}}}} 
2013-06-03 16:21:19,925 [localhost-startStop-1] DEBUG mapping.SearchableClassMappingConfigurator - [com_ecw_wellness_comment] => {com_ecw_wellness_comment={properties={post={type=object}, vote={type=integer, include_in_all=true}, dateCreated={type=date, include_in_all=true}, lastUpdated={type=date, include_in_all=true}, comment={type=string, include_in_all=true, term_vector=with_positions_offsets}}}} 
2013-06-03 16:21:19,977 [localhost-startStop-1] DEBUG mapping.SearchableClassMappingConfigurator - [com_ecw_wellness_post] => {com_ecw_wellness_post={properties={tags={type=object}, body={type=string, include_in_all=true, term_vector=with_positions_offsets}, title={type=string, include_in_all=true, term_vector=with_positions_offsets}, dateCreated={type=date, include_in_all=true}, lastUpdated={type=date, include_in_all=true}, comments={properties={post={type=object}, vote={type=integer, include_in_all=true}, dateCreated={type=date, include_in_all=true}, lastUpdated={type=date, include_in_all=true}, comment={type=string, include_in_all=true, term_vector=with_positions_offsets}, id={type=long, index=not_analyzed, include_in_all=false}, class={type=string, index=no, include_in_all=false}, ref={type=string, index=no, include_in_all=false}}, type=object}}}} 
2013-06-03 16:21:20,005 [localhost-startStop-1] DEBUG mapping.SearchableClassMappingConfigurator - [com_ecw_wellness_question] => {com_ecw_wellness_question={properties={tags={type=object}, title={type=string, include_in_all=true, term_vector=with_positions_offsets}, answers={type=object}, dateCreated={type=date, include_in_all=true}, lastUpdated={type=date, include_in_all=true}, question={type=string, include_in_all=true, term_vector=with_positions_offsets}}}} 
2013-06-03 16:21:20,010 [localhost-startStop-1] DEBUG mapping.SearchableClassMappingConfigurator - Cluster status: GREEN 

Ниже приводится StackTrace NPE. Классы доменов задаются в исходном вопросе.

| Error 2013-06-03 16:17:00,891 [http-bio-8080-exec-8] ERROR errors.GrailsExceptionResolver - NullPointerException occurred when processing request: [GET] /wellness/search - parameters: 
q: smoking 
Stacktrace follows: 
Message: null 
    Line | Method 
->> 181 | unmarshallProperty in org.grails.plugins.elasticsearch.conversion.unmarshall.DomainClassUnmarshaller 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|  73 | buildResults  in  '' 
| 435 | doCall . . . . . . in org.grails.plugins.elasticsearch.ElasticSearchService$_doSearch_closure7 
|  14 | withElasticSearch in org.grails.plugins.elasticsearch.ElasticSearchHelper 
| 426 | doSearch . . . . . in org.grails.plugins.elasticsearch.ElasticSearchService 
|  86 | search    in  '' 
|  6 | index . . . . . . in com.ecw.wellness.SearchController 
| 195 | doFilter   in grails.plugin.cache.web.filter.PageFragmentCachingFilter 
|  63 | doFilter . . . . . in grails.plugin.cache.web.filter.AbstractFilter 
| 1110 | runWorker   in java.util.concurrent.ThreadPoolExecutor 
| 603 | run . . . . . . . in java.util.concurrent.ThreadPoolExecutor$Worker 
^ 722 | run    in java.lang.Thread 

Если я запускаю проект в транспортном режиме с последующей информацией, то я не подвожу «Нет узел доступной ошибки»

elasticSearch.client.mode = 'transport' 
     elasticSearch.client.hosts = [ 
      [host:'localhost', port:9300] 
    ] 
    } 

Если я добавил следующее в посте

static searchable = { 
    except = ["user"] 
comments reference:true 

} 

и это в комментарии

static searchable = { 
    except = ["user"] 
    post reference:true 
} 

Тогда я получаю следующее исключение SO .. И если я делаю это только в классе после этого я получаю Property Comment.post is not mapped as [component], but broken search hit found. ошибку во время выполнения

ERROR errors.GrailsExceptionResolver - StackOverflowError occurred when processing request: [GET] /wellness/search - parameters: 
q: smoking 
Stacktrace follows: 
Message: Executing action [index] of controller [com.ecw.wellness.SearchController] caused exception: Runtime error executing action 
    Line | Method 
->> 195 | doFilter in grails.plugin.cache.web.filter.PageFragmentCachingFilter 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|  63 | doFilter in grails.plugin.cache.web.filter.AbstractFilter 
| 1110 | runWorker in java.util.concurrent.ThreadPoolExecutor 
| 603 | run  in java.util.concurrent.ThreadPoolExecutor$Worker 
^ 722 | run . . . in java.lang.Thread 
Caused by ControllerExecutionException: Runtime error executing action 
->> 195 | doFilter in grails.plugin.cache.web.filter.PageFragmentCachingFilter 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|  63 | doFilter in grails.plugin.cache.web.filter.AbstractFilter 
| 1110 | runWorker in java.util.concurrent.ThreadPoolExecutor 
| 603 | run  in java.util.concurrent.ThreadPoolExecutor$Worker 
^ 722 | run . . . in java.lang.Thread 
Caused by InvocationTargetException: null 
->> 195 | doFilter in grails.plugin.cache.web.filter.PageFragmentCachingFilter 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|  63 | doFilter in grails.plugin.cache.web.filter.AbstractFilter 
| 1110 | runWorker in java.util.concurrent.ThreadPoolExecutor 
| 603 | run  in java.util.concurrent.ThreadPoolExecutor$Worker 
^ 722 | run . . . in java.lang.Thread 
Caused by StackOverflowError: null 
->> 354 | findClass in java.net.URLClassLoader 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
| 171 | oldFindClass in org.codehaus.groovy.tools.RootLoader 
| 143 | loadClass in  '' 
| 356 | loadClass in java.lang.ClassLoader 
| 263 | unmarshallDomain in org.grails.plugins.elasticsearch.conversion.unmarshall.DomainClassUnmarshaller 
| 256 | unmarshallReference in  '' 
| 178 | unmarshallProperty in  '' 
| 204 | unmarshallProperty in  '' 
| 268 | unmarshallDomain in  '' 
| 256 | unmarshallReference in  '' 
| 178 | unmarshallProperty in  '' 
| 268 | unmarshallDomain in  '' 
| 256 | unmarshallReference in  '' 
| 178 | unmarshallProperty in  '' 
| 204 | unmarshallProperty in  '' 
| 268 | unmarshallDomain in  '' 
| 256 | unmarshallReference in  '' 
| 178 | unmarshallProperty in  '' 
| 268 | unmarshallDomain in  '' 
| 256 | unmarshallReference in  '' 
| 178 | unmarshallProperty in  '' 
| 204 | unmarshallProperty in  '' 

ответ

0

Добавить elasticSearch.unmarshallComponents = true в вашем Config.groovy. Предполагается, что значение по умолчанию должно быть указано в файле grails-app/conf/DefaultElasticSearch.groovy плагина, но каким-то образом оно не загружено должным образом.

Also see issue#62 on the Github repository

Транспортный режим необходим автономный экземпляр ES должен быть запущен вне приложения Grails.


Edit: Об этом выпуске:

Свойство Comment.post не отображается как [компонент], но сломанный поиск хит найдено.

Вам необходимо отобразить в поисковом закрытии ваших ассоциаций либо как для поиска component или reference. Документация плагина утверждает, что ссылки на поиск по умолчанию используются по умолчанию, но это как-то не так, и документ немного устарел.

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

Пример ниже:

class Comment { 
    Post post 
    static belongsTo = [post:Post] 

    static searchable = { 
      post component:true 
    } 
} 

The documentation explaining the difference between the 2 behaviors

+0

>> "Транспортный режим необходим автономный экземпляр ES быть запущен вне приложения Grails." У меня он работает.Спасибо за ответ, надеясь, что это заставит меня работать и запускать – Sap

+0

По-прежнему та же проблема, я добавил флаг в COnfig.groovy, очистил каталог данных и перезапустил приложение и получил - >> 181 | unmarshallProperty в DomainClassUnmarshaller.java – Sap

+0

мой плохой, я опечатал 'elasticSearch.unmarshallComponents' by' unmarshallProperty' ... Я обновил сообщение. Ключ конфигурации для добавления: ** elasticSearch.unmarshallComponents ** – mstein

Смежные вопросы