How do you search collections in a domain class?
kevintanhongann opened this issue · 0 comments
kevintanhongann commented
def filter = {
nested {
path('permissions')
query {
bool {
must {
term("permissions.authority": 'Admin')
}
}
}
}
}
def results = elasticSearchService.search(keyword, filter,[indices: Company, types: Company, from: 0, size: 10])
And I got this stacktrace
java.lang.reflect.InvocationTargetException: null
at org.grails.core.DefaultGrailsControllerClass$ReflectionInvoker.invoke(DefaultGrailsControllerClass.java:211)
at org.grails.core.DefaultGrailsControllerClass.invoke(DefaultGrailsControllerClass.java:188)
at org.grails.web.mapping.mvc.UrlMappingsInfoHandlerAdapter.handle(UrlMappingsInfoHandlerAdapter.groovy:90)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55)
at org.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:77)
at org.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:67)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalArgumentException: Array elements must be defined with the "element" method call eg: element(value)
at grails.plugins.elasticsearch.util.GXContentBuilder.invokeMethod(GXContentBuilder.groovy:120)
at haulage.project.SearchService$_searchCompanyByHaulier_closure6$_closure13.doCall(SearchService.groovy:102)
at grails.plugins.elasticsearch.util.GXContentBuilder.handleClosureNode(GXContentBuilder.groovy:166)
at grails.plugins.elasticsearch.util.GXContentBuilder.invokeMethod(GXContentBuilder.groovy:117)
at haulage.project.SearchService$_searchCompanyByHaulier_closure6.doCall(SearchService.groovy:101)
at grails.plugins.elasticsearch.util.GXContentBuilder.buildRoot(GXContentBuilder.groovy:72)
at grails.plugins.elasticsearch.util.GXContentBuilder.build(GXContentBuilder.groovy:45)
at grails.plugins.elasticsearch.util.GXContentBuilder.buildAsBytes(GXContentBuilder.groovy:61)
at grails.plugins.elasticsearch.util.GXContentBuilder.buildAsBytes(GXContentBuilder.groovy:56)
at grails.plugins.elasticsearch.ElasticSearchService.setFilterInSource(ElasticSearchService.groovy:433)
at grails.plugins.elasticsearch.ElasticSearchService.buildSearchRequest(ElasticSearchService.groovy:371)
at grails.plugins.elasticsearch.ElasticSearchService.search(ElasticSearchService.groovy:116)
at haulage.project.SearchService.searchCompanyByHaulier(SearchService.groovy:112)
at haulage.project.SearchController.haulierCompany(SearchController.groovy:247)
... 14 common frames omitted
How do I define the element method call? Any pointers?