大家经常会听到使用ELK搭建日志管理平台、完成日志聚合检索的功能,那么这个平台到底是个什么概念,怎么搭建,怎么使用呢?

ELK包括ElasticSearch(数据存储、快速查询)、logstash(日志搜集)、kibana(展示ElasticSearch数据的图形界面)。

kibana是一个图形界面,可以在上面条件检索存储在ElasticSearch里数据,相当于提供了ES的可视化操作管理器。大概长下面这样子,在条件栏我输入了id:<10,然后它就把id

<10的数据展示出来。

可以看到,kibana搭配ES是一个不错的选择,比ES的head插件的界面友好多了。注意,它们与logstash是没有任何关系的,完全可以单独使用,logstash相当于一个日志中转站,通过接收客户端发送来的日志,然后把日志存储到ES中。

下面我们就来看一下kibana搭配ES使用的案例。

1 搭配kibana环境

ELK这3个软件都是Elastic一家的,可以在https://www.elastic.co/downloads/past-releases 下载到各个版本的三个软件,但是需要注意版本的对应关系,一般每一个ElasticSearch都有一个同样版本的logstash,譬如我之前文章中使用的ES2.3.4,logstash也有个2.3.4,与之对应的kibana版本是4.5.2
先安装好ES,如果没装过的回头看http://blog.csdn.net/tianyaleixiaowu/article/details/72846814
下载kibana,wget https://download.elastic.co/kibana/kibana/kibana-4.5.2-1.x86_64.rpm。
安装,rpm -ivh kibana-4.5.2-1.x86_64.rpm。
安装后,需要到安装目录做配置,第一次我安装后,居然找不到安装目录了,使用命令 rpm -ql kibana-4.5.2-1.x86_64查找安装目录,发现和其他软件默认的不一样,它是安装到/opt/kibana里去了。我们进到该目录,vi config/kibana.yml.


这个配置文件大家仔细看一下,里面有很多重要的默认配置信息。端口号5601,hostip 0.0.0.0,elasticsearch.url:localhost:9200,kibana.index:.kibana,还有ES的账号密码。
这些配置如果你需要改动哪个就改动哪个,譬如你的ES和kibana不在一个主机,那就需要改一下ip。这里我的ELK三个软件都在一个linux主机上,所有kibana的配置我保持不变即可。
启动kibana,执行bin/kibana即可。
这里有个小知识点,我用终端连接了远程服务器,并启动了kibana,那么这个终端就会一直停留在启动界面,不能做别的操作了,当终端关闭,kibana也就关闭了。所以我需要将kibana进程放到后台去。


1. Ctrl+z,暂停进程,然后看到进程的作业号,如图为1
2. bg %1置为后台运行
3. disown -h %1使其不受终端关闭的影响

2 使用kibana

启动完kibana后,访问ip:5601即可看到类似于下面的界面。初次使用时,会让你配置一个默认的index,也就是你至少需要关联一个ES里的Index,可以使用pattern正则匹配。
由于之前我们已经使用过ES了,里面是有index的,用es的head看看


我这里面有几个index,其中.kibana是kibana自己创建的,其他几个都是我创建的。
如果你ES里没有index的话,就得先创建个,插入数据,然后才能使用kibana的查询功能。之前的文章里已经讲过怎么给ES插值了,譬如那个百万数据查找附近的人功能,里面的数据就是插入到图上的Elastic_search_project里了,有155M。下面我就再用个简单的例子插值吧。
创建个javaBean
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

import java.util.Date;

@Document(indexName="blog_index",type="blog",indexStoreType="fs",shards=5,replicas=1,refreshInterval="-1")
public class Blog {
    @Id
    private int id;

    private String name;

    @Field(type = FieldType.Date)
    private Date createTime;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}

这里有个地方需要注意,就是必须要有一个为Date类型的field,不然kibana那里是添加不了这个Index的,kibana是以时间排序来进行查询选择的。

你只定义Date还是不行的,必须有@Field(FieldType.Date)标注,不然Date类型会被自动转为Long。
定义好这个bean,就可以往ES里插值了,不会的请参考之前的文章。
插值后,先在ES里看看

然后就可以在kibana里添加Index了

你填写index name后,就会自动出现Time-field name的下拉框,自自动找到Field为Date的字段。
点击Create即可。然后打开discover界面,就可以查看搜索对应的ES的Index了。注意箭头标的都应该点开看看,都是常用的功能。


右上角的时间选择默认是最近15分钟,所以如果看不到数据了,就调一下时间。
查询输入框里可以输入各种条件,你能用字段名和你感兴趣的值构建一个搜索,数字类型的数据可使用比较操作符比如>、<、=等,你可使用AND、OR、 NOT逻辑符连接元素,必须是大写。譬如
id:<50 AND id:>10
name:=name9

这里你可以构建自己的查询条件来完成想要的查询结果。

此外,你还可以完成数据聚合,地图位置显示,柱状图之类的展示,在大数据中非常有用。

还有一些使用可参考http://blog.csdn.net/ming_311/article/details/50619859,还有官网https://www.elastic.co/cn/products/kibana


使用kibana来进行ElasticSearch的信息查询检索的更多相关文章

  1. kibana和ElasticSearch的信息查询检索

    使用kibana来进行ElasticSearch的信息查询检索 大家经常会听到使用ELK搭建日志管理平台.完成日志聚合检索的功能,那么这个平台到底是个什么概念,怎么搭建,怎么使用呢? ELK包括Ela ...

  2. 利用kibana插件对Elasticsearch进行bool查询

    #bool查询#老版本的filtered查询已经被bool代替#用 bool包括 must should must_not filter来完成 ,格式如下:#bool:{#  "filter ...

  3. 利用kibana插件对Elasticsearch查询

    利用kibana插件对Elasticsearch查询 Elasticsearch是功能非常强大的搜索引擎,使用它的目的就是为了快速的查询到需要的数据. 查询分类: 基本查询:使用Elasticsear ...

  4. Elasticsearch文档查询

    简单数据集 到目前为止,已经了解了基本知识,现在我们尝试用更逼真的数据集,这儿已经准备好了一份虚构的JSON,关于客户银行账户信息的.每个文档的结构如下: { , , "firstname& ...

  5. elasticsearch GIS空间查询问题解决

    在GIS行业的应用越来越广泛,GIS最常用根据区域进行空间数据查询     我定义了两个方法,一起来看一下: /** * geodistance filter * 一个过滤器来过滤基于一个特定的距离从 ...

  6. Unix无缓冲文件操作函数、文件信息查询

    问题描述:         Unix无缓冲文件操作函数.文件信息查询 问题解决:        struct stat 结构体信息: 具体代码: 具体源文件:

  7. 使用Python改写的身份证信息查询小程序

    花了几天时间过了一遍python基础.真心感觉python让世界充满了爱…先简单的使用一下python好了,拿以前写的<C语言身份证信息查询系统(修改版)>开刀~ 很多东西,不需要考虑C语 ...

  8. C语言身份证信息查询系统(修改版)

    很久以前写了一个<C语言身份证信息查询系统>,如果你点击链接进去看了. 估计也会被我那磅礴大气的代码震惊到的,最近复习/学习文件操作,把代码改了改,算是对以前还不会文件操作的时候的愿望,哈 ...

  9. Elasticsearch(GEO)空间检索查询

    Elasticsearch(GEO)空间检索查询python版本 1.Elasticsearch ES的强大就不用多说了,当你安装上插件,搭建好集群,你就拥有了一个搜索系统. 当然,ES的集群优化和查 ...

随机推荐

  1. 屏幕变黑白-winhotkey

    下载了个windows hot key 的工具想看快捷键冲突 结果安装好之后屏幕变黑白了,变成辅助模式了.而且鼠标移动到哪都加蓝色框框  如果这个时候你带上耳机就能听到在朗读,这应该也是一种辅助模式 ...

  2. 20145331 《Java程序设计》第8周学习总结

    20145331 <Java程序设计>第8周学习总结 教材学习内容总结 14.NIO与NIO2 高级的输入输出处理,可以使用NIO(New IO),NIO2是文件系统的API Channe ...

  3. Ubuntu 12.10 用wubi安装到硬盘中

    wubi安装的优势: ubuntu可以像安装软件一样方便的安装.删除,不影响物理机的原有系统 这种方式安装的ubuntu不用担心功能会有所缺失,ubuntu所有的功能都在 和安装了双系统一样,没有什么 ...

  4. RabbitMQ延迟队列

    rabbitmq延迟队列 rabbitmq实现延迟队列用了rabbitmq-delayed-message-exchange插件,需要提前安装,并启用. 原理 其原理是通过Exchange来实现延迟功 ...

  5. Docker-Compose 一键部署Ningx+.Net Core+Redis集群

    在看该文章前,你需要对Docker有所了解. 1.创建WebApp应用程序 我使用的是.Net Core 1.0.1版本,创建一个MVC应用程序,并添加对Redis的引用.因为这些很基础,也很简单,这 ...

  6. jQuery Ajax总结

    jQuery对Ajax的操作进行了封装.jQuery中\(.ajax()属于最底层的方法,这个放在后面说,首先看看封装了\).ajax()的方法. load()方法 load()可以远程载入HTML并 ...

  7. 单元测试 使用 Effort 内存数据库 报错

    单元测试中 使用 Effort 内存数据库,可能会遇到两个错误: 1. :“No Entity Framework provider found for the ADO.NET provider wi ...

  8. SQL优化- in和not in

    in不会导致索引失效,但最终数据库会将in语句解析为or语句,eg: select * from T_MAIN_PROCESS t where t.audit_status_code in ('05' ...

  9. vue削笔机

    // 1.vue 是异步更新dom // 2.vue修改多次状态,vue 只会渲染一次 // 3.vue变化侦查机制,每次状态的变化都会发出一个渲染信号. // 检查队列中是否存在,不存在将渲染操作添 ...

  10. 蓄水池抽样算法 Reservoir Sampling

    2018-03-05 14:06:40 问题描述:给出一个数据流,这个数据流的长度很大或者未知.并且对该数据流中数据只能访问一次.请写出一个随机选择算法,使得数据流中所有数据被选中的概率相等. 问题求 ...