美文网首页
kibanna搜索

kibanna搜索

作者: 杨_振伟 | 来源:发表于2018-01-11 15:28 被阅读0次

kibanna搜索规则

  1. 语法关键字
+ - && || ! ( ) { } [ ] ^ " ~ * ? : \ 
如果所要查询的查询词中本身包含关键字,则需要用\进行转义
  1. 查询词(Term)
在搜索框搜索balance, cert_no。包含balance 或者 cert_no 都会搜索到
用引号包裹起来"balance, cert_no"表示精确搜索
  1. 查询域(Field)
在搜索框中输入 appName:"mortgage-service"
  1. 通配符查询(Wildcard)
支持两种通配符:?表示一个字符,*表示多个字符。
在搜索框中输入 cha*name
  1. 模糊查询(Fuzzy)
quikc~ brwn~ foks~
  1. 临近查询(Proximity)
在搜索框中输入  "order by  asc" ~2 表示这三个单子之间的距离不超过2
"order by create_time asc LIMIT" 可以被搜索到
  1. 区间查询(Range)
区间查询包含两种,一种是包含边界,用[A TO B]指定,一种是不包含边界,用{A TO B}指定。
bytes[1000 TO 10000]   bytes:>100000
  1. 增加一个查询词的权重(Boost)
可以在查询词后面加^N来设定此查询词的权重,默认是1,如果N大于1,
则说明此查询词更重要,如果N小于1,则说明此查询词更不重要
例:(图片^2  执行) 包含图片的文档会排在前面
  1. 布尔操作符
quick brown +fox -news
fox是必须存在的
news是必须不包含的
quick and brown 是可选的  空格表示或的意思
  1. 组合
(quick OR brown) AND fox
status:(active OR pending) title:(full text search)^2

elasticsearch搜索

  1. 介绍


    DSL.png
  1. 检索一月10号, 外微nginx日志中响应时间超过5秒的
    • sql写法
      select * from waiwei_nginx where request_time >5 and (datetime > 1515542400000 and datetime < 1515628800000)
    • kibanna简短写法
      request_time:>5 AND @timestamp:>1515542400000
    • elasticsearch query DSL
GET  /nginx-app-wechat_waiwei-*/_search
  {
    "query": {
      "bool": {
        "must": [
          {
           "range": {
              "request_time": {
                "gt": 5
              }
            }
          },
          {
            "range": {
              "@timestamp": {
                "gt": 1515542400000,
                 "lt": 1515628800000
              }
            }
          }
        ]
      }
    }
  }
  1. 检索一月10号,外微nginx日志中响应时间超过3秒的url,并统计每个url出现的次数
    • sql写法
      select count(*),url from waiwei_nginx where request_time >5 and datetime > 1515542400000 and datetime < 1515628800000 group by url
    • elasticsearch query DSL
  GET  /nginx-app-wechat_waiwei-2018.01.10/_search
  {
    "size": 0, 
    "query": {
        "bool": {
          "filter": {
             "range": {
               "request_time": {
                 "gte": 5
               }
             }
          }
        }
    },
    "aggs": {
      "url": {
        "terms": {
          "field": "url.keyword"
        }
      }
    }
  }
  1. 求外微nginx日志中每个url的平均耗时和调用次数以及响应码的占比,按平均时间排序取前5条
    • sql 写法
      select AVG( request_time) as avg_request_time,count(status),url,status from waiwei_nginx GROUP BY url,status order by avg_request_time LIMIT 5
    • elasticsearch query DSL
  GET  /nginx-app-wechat_waiwei-*/_search
  {
    "size": 0, 
    "aggs": {
      "url": {
        "terms": {
          "field": "url.keyword",
          "size":"5", 
           "order": {
             "avg_request_time": "desc"
           }
         },
         "aggs": {
           "avg_request_time": {
             "avg": {
               "field": "request_time"
             }
           },
           "status":{
              "terms": {
                "field": "status"
              }
           }
          }
      }
    }
  }

elk 部署

  1. 准备三个节点 elk1、elk2、elk3
1. docker-machine create  --engine-registry-mirror=https://7os77co8.mirror.aliyuncs.com \
  --driver generic \
  --generic-ip-address=10.33.80.122  \
  --generic-ssh-key ~/.ssh/id_rsa \
   elk1

2. docker-machine create  --engine-registry-mirror=https://7os77co8.mirror.aliyuncs.com \
  --driver generic \
  --generic-ip-address=10.33.80.123 \
  --generic-ssh-key ~/.ssh/id_rsa \
   elk2

3.  docker-machine create  --engine-registry-mirror=https://7os77co8.mirror.aliyuncs.com \
  --driver generic \
  --generic-ip-address=10.33.80.124  \
  --generic-ssh-key ~/.ssh/id_rsa \
   elk3
  1. 准备elk环境
1. docker-machine ssh elk1 "sysctl -w vm.max_map_count=262144"

2. docker-machine ssh elk1 "echo 'vm.max_map_count=262144' >> /etc/sysctl.conf"

3. docker-machine ssh elk1 "echo    '*  soft nproc 65536
                                  *  hard nproc 65536
                                  *  soft nofile 65536
                                  *  hard nofile 65536
                                  *  soft memlock unlimited
                                  *  hard memlock unlimited' >> /etc/security/limits.conf"
                                  
4. docker-machine ssh elk1 "sudo swapoff -a" (永久关闭交换内存则需要修改/etc/fstab)

5. docker-machine ssh elk2、elk3也执行上述步骤。
  1. 准备swarm环境
1. docker-machine ssh elk1  "docker swarm init"

2. docker-machine ssh elk2  "docker swarm join --token SWMTKN-1-************************ IP(elk1的IP)"

3. docker-machine ssh elk3  "docker swarm join --token SWMTKN-1-************************ IP(elk1的IP)"

4. docker-machine ssh elk1 "firewall-cmd --permanent --zone=public --add-port=5601/tcp  --add-port=9200/tcp --add-port=9300/tcp  --add-port=5044/tcp --add-port=7946/tcp  --add-port=7946/udp  --add-port=4789/udp --permanent  && firewall-cmd --reload" 

5. docker-machine ssh elk2 "firewall-cmd --permanent --zone=public --add-port=5601/tcp  --add-port=9200/tcp  --add-port=9300/tcp --add-port=5044/tcp --add-port=7946/tcp  --add-port=7946/udp  --add-port=4789/udp --permanent  && firewall-cmd --reload" 

6. docker-machine ssh elk3 "firewall-cmd --permanent --zone=public --add-port=5601/tcp  --add-port=9200/tcp  --add-port=9300/tcp --add-port=5044/tcp --add-port=7946/tcp  --add-port=7946/udp  --add-port=4789/udp --permanent  && firewall-cmd --reload" 
备注:5601是kibana端口、9200是elasticsearch的端口、5044是beat接收日志的端口、7946与4789是swarm服务发现的端口
  1. 准备启动
1. eval $(docker-machine env elk1)

2.  docker node update --label-add logstash=logstash elk2 && docker node update --label-add logstash=logstash elk3 
备注: 有logstash标签的节点才会接受logstash服务

3. docker node update --label-add elasticsearch=elasticsearch elk1 && \
   docker node update --label-add elasticsearch=elasticsearch elk2 && \
   docker node update --label-add elasticsearch=elasticsearch elk3
备注: 有elasticsearch标签的节点才会接受elasticsearch服务 

4. git clone https://github.com/yangzhenwei-java/docker-swarm-elk.git

5. cd docker-swarm-elk && docker stack deploy -c docker-compose.yml elk

6. docker run  --name filebeat -v /root/logs:/usr/share/filebeat/logs  registry.cn-beijing.aliyuncs.com/yangzhenwei/filebeat:6.1.0
备注:当前docker-machine的默认控制节点是elk1, 执行eval $(docker-machine env --unset)去除控制
  1. 备注:
    1. registry.cn-beijing.aliyuncs.com/yangzhenwei/elasticsearch 只是为了加速下载镜像,
        没有做别的改动。官方的镜像如docker.elastic.co/elasticsearch/elasticsearch:6.1.0 下载太慢了。
    
    2. 收集tomcat的日志格式如下
    <pattern> %d^|^%contextName^|^%X{requestId}^|^%level^|^%c{1.}^|^%t^|^%m%n</pattern>
    
    3. 收集nginx的日志格式如下
        log_format json '{"datetime":"$time_local",'
                        '"clientip":"$remote_addr",'
                        '"ident":"$remote_user",'
                        '"http_host":"$host",'
                        '"method":"$request_method",'
                        '"url":"$uri",'
                        '"status":$status,'
                        '"bytes":$body_bytes_sent,'
                        '"referrer":"$http_referer",'
                        '"agent":"$http_user_agent",'
                        '"x_forwarded_for":"$http_x_forwarded_for",'
                        '"appName":"$app_name",'
                        '"upstream_addr":"$upstream_addr",'
                        '"upstream_response_time":"$upstream_response_time",'
                        '"request_time":$request_time}';

参考

相关文章

  • kibanna搜索

    kibanna搜索规则 语法关键字 查询词(Term) 查询域(Field) 通配符查询(Wildcard) 模糊...

  • docker-compose安装ES集群以及kibanna并配置

    配置文件 在同一个目录下新建配置文件vim docker-compose.yml 挂载的目录记得提前建好 es-m...

  • 搜索+搜索+搜索

    鲜活的一天,从起床那刻开始! <感谢小能熊@陈华伟老师的知识管理课程,仅用于个人笔记学习> 引子 经典的东西值得反...

  • 搜索条搜索

    AppDelegate.m ViewController *theVc = [[ViewController al...

  • GridSearch

    不同搜索空间的比较图: 空间搜索 螺旋搜索 线性搜索 网格搜索 可以看到,在超参的搜索过程汇总,网格搜索和螺旋搜索...

  • 搜索功能 分类搜索

    ``` defindexifparams[:category].blank? @products = Prod...

  • 说“搜索”就搜索

    某天逛网易严选,想买条毛巾,直接在搜索区搜索毛巾 在结果中,下翻了许久,太多种类了,只想买纯棉毛巾,这时想搜索“纯...

  • 搜索最近搜索建议

    前言 本章内容为 Android开发者指南的 Framework Topics/Search/Adding Rec...

  • 排序与搜索:搜索

    搜索 搜索是在一个项目集合中找到一个特定项目的算法过程。搜索通常的答案是真的或假的,因为该项目是否存在。 搜索的几...

  • 【电商运营01】做不好淘宝SEO?怪不得没人买你的好货!

    一、淘宝搜索 1、按买家的搜索行为: (1)关键词搜索(2)类目搜索 2、按搜索框的搜索形式: (1)宝贝搜索(默...

网友评论

      本文标题:kibanna搜索

      本文链接:https://www.haomeiwen.com/subject/xnoznxtx.html