日志搜集分析-- 自定义elasticsearch数据查询

Posted 拖地先生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了日志搜集分析-- 自定义elasticsearch数据查询相关的知识,希望对你有一定的参考价值。

经过之前的工作(,),目前已经完成了数据地图的数据格式化和录入记录,但由于默认的热力图不够酷炫,需要自定义样式。这样就需要用到Elasticsearch的全文检索,检索出数据后,使用php接口格式化数据输出。

一、全文检索

  1. 搜索条件(时间,空间)

  2. 输出结果(用户数量)

例如,一个小时内,在中国范围内,各个经纬度坐标的,有操作行为的,用户个数。由此需求,可以得到相应的Elasticsearch的搜索语句,如下:

  1. size=0表示不分页

  2. query为搜索主体,其中的必要条件为时间参数,即,搜索此段时间内的所有数据

  3. aggs中相当于spl中的where条件,而其中geo_bounding_box为地理范围,由左上角经纬度点到右下角经纬度点所界定的一个矩形方框。

  4. aggs嵌套,即上层条件的结果上,继续做筛选

  5. geohash_grid表示,按照你定义的精度计算每一个点的 geohash 值而将附近的位置聚合在一起,其中field为目前筛选的的字段, precision为经度,单位为km

  6. 最后,通过geo_centroid得到key为location的聚合数据

结果数据格式如下:

日志搜集分析(九)-- 自定义elasticsearch数据查询

  1. aggregations中是我们最终需要的数据

  2. 其中location为聚合的经纬度坐标,紧跟着的count则指的是,在此点2km*2km范围之内的用户数。

自此,Elasticsearch中search调用方式清楚了。

二、接口书写

  1. 使用Elasticseach的PHP API

  2. 确定输入参数:时间范围,空间范围

  3. 确定输出数据结构,并格式化数据输出

日志搜集分析(九)-- 自定义elasticsearch数据查询

日志搜集分析(九)-- 自定义elasticsearch数据查询

由于H5页面插件限制,所以需要特定的数据格式。所以最终输出结果如下:

参考文档:

https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/_configuration.html

https://www.elastic.co/guide/en/elasticsearch/reference/current/search.html

https://www.elastic.co/guide/cn/elasticsearch/guide/current/geohash-grid-agg.html


以上是关于日志搜集分析-- 自定义elasticsearch数据查询的主要内容,如果未能解决你的问题,请参考以下文章

ELK 通过地理位置显示访问来源

日志系统ELKStack安装部署

初识集中化日志平台框架 ELK

ELK初步实践

ELK实时日志分析平台部署

ELK日志分析系统(实例!!!)