zoukankan      html  css  js  c++  java
  • ELK学习总结(3-2)elk的过滤查询

    和一般查询比较,filter查询:能够缓存数据在内存中,应该尽可能使用

    建立测试数据

    查看测试数据

    1、filtered查询

    GET /store/products/_search

    {

          "query":{

               "filtered":{

                   "query": {

                          "match_all":{}               

                   },

                   filter:{

                          "terms":{

                                "price":[10,20] 

                          }

                   } 

              }

          }

    }

    ## 调用没有得到结果? 因为mapping没有指定not_analyzed

    GET /store/products/_search

    {

          "query":{

               "filtered":{

                   "query": {

                          "match_all":{}               

                   },

                   filter:{

                          "term":{

                                "productID":"QW123"

                          }

                   } 

              }

          }

    }

    GET /_analyze?text=QW123

    --发现分析结果呈小写qw123

    GET /store/_mapping

    DELETE /store

    ##解决办法:重新建立一个映射,让productID处于not_analyzed模式

    PUT /store

    {

          "mappings":{

               "products":{

                   "properties": {

                          "productID":{

                               “type”:“string”,

                               “index”:“not_analyzed”

                          }               

                   } 

              }

          }

    }

    2、bool过滤查询,可以实现组合过滤查询 

    "bool":{

         "must":[],

         "should":[], 可以满足,也可以不满足

         "must_not":[]

    }

    GET /store/products/_search

    {

          "query":{

               "filtered":{

                   "filter": {

                          "bool":{

                              "should":[

                                    {"term":{"price":20}},

                                    {"term":{"productID":"SD12342"}}

                              ],

                              "must_not":[

                                    {"term":{"price":30}}

                              ]

                          }                              

                   } 

              }

          }

    }

    3、嵌套查询

    4、and or not查询

        and  并且,类似于must

        or    或者,类似于should

        not  不是,类似于must_not

    GET /store/products/_search

    {

          "query":{

               "filtered":{

                   "filter": {

                          "or":[

                                    {"term":{"price":20}},

                                    {"term":{"productID":"SD12342"}}

                           ]

                   },

                   "query":{

                          "match_all":{}

                   } 

              }

          }

    }

    5、range过滤查询

         gt:>

         lt:<

         gte: >=

         lte : <=

    GET /store/products/_search

    {

          "query":{

               "filtered":{

                   "filter": {

                          "range":{

                              "price":{

                                    "gte":20,

                                    "lt":50

                              }

                          }                              

                   } 

              }

          }

    }

    6、过滤空和非空

         exists

         missing

    7、cache缓存

         

  • 相关阅读:
    数据库SQL实战- 获取所有非manager员工当前的薪水情况,给出dept_no、emp_no以及salary ,当前表示to_date='9999-01-01'
    数据库SQL实战- 查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序
    数据库SQL实战- 查找当前薪水(to_date='9999-01-01')排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不准使用order by
    springboot 整合redis 以及redis的简单使用
    SQL语句按in排序
    编写高质量的代码
    linux 后渗透测试
    工具包学习与收集
    python 学习实例(cmdMD链接)
    python 学习之FAQ:find 与 find_all 使用
  • 原文地址:https://www.cnblogs.com/lexiaofei/p/6651828.html
Copyright © 2011-2022 走看看