1.term过滤(精准匹配)

         作用:主要用于精准匹配哪些值,比如:数字,日期,布尔值,not_analyzed的字符串(未经分析的文本数据类型),例如:
         {“term”:{“age”:26}}
         {“term”:{“date”:“2014-09-01”}}
         {“term”:{“public”:true}}
         {“term”:{“tag”:“full_text”}}
         查找hostname字段完全匹配成activity.report的数据:
         {
           "query":{
             "term":{
               "hostname":"activity.report"
               }
             }
           }

2.terms过滤(或)

         作用:与term类似,但terms允许指定多个匹配条件。如果某个字段指定多个值,那么文档需要一起做匹配。例如:
         “terms”:{
           "tag":["search","full_text","nosql"]
           }
         }
         查询所有http状态是302和304的,ES中的状态是数字类型的字段,所以可以直接这么写:
         “query”:{
           “terms”:{
             “status”:[
               303,
               304
             ]
           }
         }
         可理解为是term精准匹配下“或”的关系。

3.range过滤(按范围查找)

         作用:按照指定范围查找一批数据。
         范围操作符:
                  lt:小于
                  lte:小于等于
                  gt:大于
                  gte:大于等于
         查询年龄在10-20岁之间:
         {
           “query”:{
             “range”:{
               “age”:{
                 “gte”:20,
                 “lte”:30
               }
             }
           }
         }
         请求页面耗时大于1s的数据:
         

4.exists和missing过滤

5.bool过滤