PHP开发中使用es查询数据

ELK


官网地址:https://www.elastic.co/cn/

官网权威指南:https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html

安装指南:https://www.elastic.co/guide/en/elasticsearch/reference/5.x/rpm.html

ELK是Elasticsearch、Logstash、Kibana的简称,这三者是核心套件,但并非全部。

Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上。

Logstash是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。

Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据

简述:

Logstash:负责日志的收集,处理和储存

Elasticsearch:负责日志检索和分析

Kibana:负责日志的可视化

上面配置信息直接工具图形化界面查询的确很方便,如果想自己定制化使用到指定的后台管理,就需要自己去开发编程去采集数据并拿回来展示。

es收集的数据虽然可以在kibina里展示,但是要局限也比较大,不能用kibina展示的只能自己动手写web展示了,利用php读取elasticsearch数据,经过处理成echarts 图表数据通过web界面展示。这里展开阐述一下es采集

使用的查询包::


{

        "require": {

            "elasticsearch/elasticsearch": "^7.0",

            "ongr/elasticsearch-dsl": "^7.0"

        }

}

举例


public function esCollect($indexName)

    {

        $search = new Search();

        $timeRange = new RangeQuery('@timestamp', [

            'gte' => get_start_time() * 1000,

            'lt' => get_end_time() * 1000

        ]);

        $statusItem = new TermsAggregation($indexName, $indexName);

        $search->addQuery($timeRange);

        $search->addAggregation($statusItem);

        $params = [

            'index' => get_index($this->serviceName),

            'body' => $search->toArray(),

        ];

        $result = get_es_client()->search($params);

        unset($search);

        return $result;

    }


开发过程中,一般使用时候需要理解如何调用orm去查询es数据,主要是聚合统计分析,挑选合适的选择器,搭配索引去查询。

Elasticsearch有一个功能叫做聚合(aggregations),它允许你在数据上生成复杂的分析统计。它很像SQL中的GROUP BY但是功能更强大。

参考文献:https://es.xiaoleilu.com/index.html

你可能感兴趣的:(PHP开发中使用es查询数据)