2015-01-01 4 views
1

У меня есть следующий запрос в Grails (Plugin elasticsearch: 0.0.3.8), который работает отлично:Несколько ElasticSearch фильтров в Grails

class MyDomain { 

User user 
String text 
Boolean deleted 
Boolean disabled 

static searchable = { user component:true } 

} 

class User { 
    String name 
    static searchable = { root false } 
} 

MyDomain.search(searchType: 'dfs_query_and_fetch') { 
     query_string(query: params.query, fields:['text']) 
    } { 
     nested { 
      path = "user" 
      query { 
       bool { 
        must { match("user.name": params.name) } 
       } 
      } 
     } 
    } 

Но теперь я хочу добавить некоторые дополнительные фильтры: матча ("удалено": true) match ("disabled": true)

Может ли кто-нибудь объяснить мне, как этого достичь? Спасибо

+0

оберните вложенную деталь самостоятельно в блок 'bool.must' и добавьте туда другие подходы – cfrick

ответ

1

Я, наконец, понял. Большое спасибо cfrick за помощь.

MyDomain.search(searchType: 'dfs_query_and_fetch') { 
     query_string(query: params.query, fields:['text']) 
    } { 
     bool { 
      must { term(disabled: true) } 
      must { term(deleted: true) } 
      must { 
       nested { 
        path = "user" 
        query { 
         bool { 
          must { match("user.name": params.name) } 
         } 
        } 
       } 
      } 
     } 
    } 
Смежные вопросы