elasticsearch中的嵌套布尔查询

时间:2018-04-03 16:10:20

标签: elasticsearch

我有一个像

这样的SQL查询
select student_name,roll_number 
from
mytable
where
(course = 'CCNA' or course = 'MCSE') and course NOT Like '%network%'

如何在nested boolean query中创建等效的elasticsearch

1 个答案:

答案 0 :(得分:2)

以下查询可能会对您有所帮助,此查询会回复哪些课程不包含"网络"关键字和课程有价值" ccna"或" mcse"。 我没有考虑过区分大小写功能,并假设您有一个默认映射。

POST study-doc*/_search
{
"query": {
    "bool": {
        "must": [
           {
               "bool": {
                   "should": [
                      {
                          "term": {
                             "course": {
                                "value": "ccna"
                             }
                          }
                      },{
                          "term": {
                             "course": {
                                "value": "msce"
                             }
                          }
                      }
                   ]
               }},
               {
               "bool": {
                    "must": [
                       {
                           "wildcard": {
                              "course.keyword": {
                                 "value": "^((?!network).)*$"
                              }
                           }
                       }
                    ]    
               }
           }

        ]
    }
}
}