zoukankan      html  css  js  c++  java
  • Kibana-Elasticsearch分析工具

    原文地址:https://www.cnblogs.com/imdeveloper/p/12823384.html

    Kibana 是在 Elasticsearch 有了相当多的数据之后,进行分析这些数据用的工具。Kibana 里面有一个叫做 Dev Tools 的工具,可以很方便地以 Restful 风格向 Elasticsearch 服务器提交请求。类似于使用Navicat工具连接MySQL这种关系型数据库,对数据库做操作。

    启动

    1. 选择合适版本安装:https://www.elastic.co/cn/downloads/past-releases#kibana
    2. 在kibana的解压文件中启动kibana.bat
    3. 打开管理站点:http://localhost:5601/app/kibana#/dev_tools/console?_g=()
    4. 运行测试(查看服务器状态健康度,green表示一切OK):GET /_cat/health?v

    Elasticsearch和kibana版本对应关系

    Kibana版本 ES版本
    4.1 1.4.4 +
    4.2 2.0 +
    4.3 2.1 +
    4.4 2.2 +
    4.5 2.3 +
    4.6 2.4 +
    5 5 +
    ... ...

    使用简介

    1. ?pretty格式化返回json数据

    索引管理

    -- 增加索引
    PUT /letbingo?pretty
    -- 查询所有索引
    GET /_cat/indices?v
    -- 删除索引
    DELETE /letbingo?pretty
    

    中文分词器

    GET _analyze
    {
      "analyzer":"ik_max_word",
      "text":"趵突泉遭遇停喷危机"
    }
    

    文档管理

    -- 增加文档
    -- person在elasticsearch里是type的概念,相当于数据库里的表,这里就相当于向person表里插入了一条数据
    PUT /letbingo/person/1?pretty
    {
      "name": "lego"
    }
    -- 获取文档
    GET /letbingo/person/1?pretty
    -- 修改文档
    -- 修改后版本号会发生变化
    POST /letbingo/person/1/_update?pretty
    {
      "doc": { "name": "letbingo" }
    }
    -- 删除文档
    DELETE /letbingo/person/1?pretty
    

    批量导入

    简单的多条记录同时导入

    这种方式能够插入的上限较小

    POST _bulk
    {"index":{"_index":"letbingo","_type":"person","_id":1}}
    {"sex":"male","age":18,"name":"lego","place":"武汉","descrption":"javer"}
    {"index":{"_index":"letbingo","_type":"person","_id":2}}
    {"sex":"female","age":20,"name":"lisa","place":"上海","descrption":"ui"}
    

    使用curl工具批量导入

    curl是一个工具,可以模拟浏览器向服务器提交数据。
    资源链接:https://pan.baidu.com/s/1HCN4nM1dSVvYrCeQnM15Cg 提取码:526r

    1. 按照第一种方法中的格式把记录写入json文件中
    2. 把curl.exe和json文件放在同一个目录下
    3. 在cmd中,运行如下命令:
    cd C:Downloadscurl
    curl -H "Content-Type: application/json" -XPOST "localhost:9200/letbingo/person/_bulk?refresh" --data-binary "@persons.json"
    

    查询操作

    1. 查询所有
    GET /letbingo/_search
    {
        "query": { "match_all": {} }
    }
    
    1. 根据id倒序排列
    GET /letbingo/_search
    {
      "query": { "match_all": {} },
      "sort": [
        { "_id": "desc" }
      ]
    }
    
    1. 只返回指定字段
    GET /letbingo/_search
    {
      "query": { "match_all": {} },
      "_source": ["name","age"]
    }
    
    1. 条件查询
    GET /letbingo/_search
    {
      "query": { "match": { "name": "lisa" } }
    }
    
    1. 根据时间段查询
    GET /letbingo/position/_search
    {
       "query": { 
          "range" : {
             "time" : {
                 "gte": "15810971331",
                 "lte": "15830971331" 
             }
         }
       }
    }
    
    1. 分页查询
    GET /letbingo/_search
    {
      "query": { "match_all": {} },
      "from": 1,
      "size": 3,
      "sort": { "_id": { "order": "desc" } }
    }
    
    1. 聚合查询(类似传统数据库中的聚合查询)
      统计数据,第一个size:0表示不用显示每条数据,第二个size:3表示分组数据显示3条。
    GET /letbingo/_search
    {
      "size": 0,
      "aggs": {
        "group_by_place": {
          "terms": {
            "field": "place.keyword",
            "size": 3
          }
        }
      }
    }
    

    相当于Sql语句:select count(*),place from product group by place limit 0,3

    可能遇到的问题

    1. Fielddata is disabled on text fields by default. Set fielddata=true on [id] in order to load fielddata in memory by uninverting the inverted index
      原因:因为加载Fielddata是一个昂贵的过程,可能会导致用户遇到延迟命中。所以默认禁用了Fielddata。解决方法是在聚合前发送指令开启Fielddata:
    PUT /my_index/_mapping
    {
      "properties": {
        "my_field": { 
          "type":     "text",
          "fielddata": true
        }
      }
    }
    
    1. Elasticsearch health status显示为yellow
      解决方法:设置所有副本(rep)个数为0
    curl -XPUT "http://localhost:9200/_settings" -H 'Content-Type: application/json' -d'
    {
        "index" : {
            "number_of_replicas" : 0
        }
    }
    
  • 相关阅读:
    【算法】LeetCode算法题-Count And Say
    【算法】LeetCode算法题-Search Insert Position
    使用POI设置excel背景色
    Ubuntu中开启MySQL远程访问功能,并将另一个数据库服务器中的数据迁移到新的服务器中
    利用mybatis_generator自动生成Dao、Model、Mapping相关文件
    Meven笔记
    js调用百度地图API创建地图
    MySQL中日期与字符串相互转换,并进行日期比较查询
    java中将汉字转换成16进制
    Java中将16进制字符串转换成汉字
  • 原文地址:https://www.cnblogs.com/imdeveloper/p/12823384.html
Copyright © 2011-2022 走看看