实时数据之python操作elasticsearch监控数据插入图表分析

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

  例行公事,有些人可能不太了解elasticsearch,下面搜了一段,大家瞅一眼。


Elasticsearch是一款分布式搜索引擎,支持在大数据环境中进行实时数据分析。它基于Apache Lucene文本搜索引擎,内部功能通过ReST API暴露给外部。除了通过HTTP直接访问Elasticsearch,还可以通过支持Java、JavaScript、Python及更多语言的客户端库来访问。它也支持集成Apache Hadoop环境。Elasticsearch在有些处理海量数据的公司中已经有所应用,如GitHub、Foursquare和SoundCloud等。


elasticsearch 他对外提供了rest的http的接口,貌似很强大的样子。 但是咱们的一些数据平台市场会对于elasticsearch的数据进行分析,尤其是实时分析。 当然不能用 http的方式。 比如官网的demo提供的例子:


下面是查询,/ceshi 是索引,rui是type,搜索的内容是,title是jones的。 

1
curl http: //vim.xiaorui.cc:9200/ceshi/rui/_search?q=title:jones&size=5&pretty=true

添加数据


1
curl  - X POST       - '{      "title": "jones",      "amount": 5.7    }'


1.x之后,貌似不能直接curl,

注意,唯一标识符是放置在URL中而不是请求体中。如果您忽略这个标识符,搜索会返回一个错误,类似如下:

 No handler found for uri [/ceshi/rui/] and method [PUT]

发现用0.90.x的人,还是很多的~



当然在python里面,咱们可以用urllib2来搞数据。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#xiaorui.cc
import  urllib2
import  urlib
import  json
 
 
url  =  'http://vim.xiaorui.cc:9200/ceshi/rui'
data  =  {
     'title' 'jones' ,
     'amount' 5.7
     }
 
data  =  json.dumps(data)
 
req  =  urllib2.Request(url, data, headers)
out  =  urllib2.urlopen(req)
print  out.read()


但是这样的话,速度明显有点慢,官方提供了更加快速更方便的方法。

>>> from datetime import datetime

>>> from elasticsearch import Elasticsearch


# 连接elasticsearch 的端口,默认是9200

>>> es = Elasticsearch()


# 创建索引,索引的名字是my-index, 如果已经存在了,就给个400

>>> es.indices.create(index='my-index', ignore=400)

{u'acknowledged': True}


# 插入

>>> es.index(index="my-index", doc_type="test-type", id=42, body={"any": "data", "timestamp": datetime.now()})

{u'_id': u'42', u'_index': u'my-index', u'_type': u'test-type', u'_version': 1, u'ok': True}


# 查询

>>> es.get(index="my-index", doc_type="test-type", id=42)['_source']

{u'any': u'data', u'timestamp': u'2013-05-12T19:45:31.804229'}



其实熟悉mongodb的人,再看elasticsearch的语法,会发现非常的熟悉。

1
2
3
4
5
6
7
8
9
10
11
12
13
res  =  es.search(
     index = 'belajar' ,
     doc_type = 'pesan' ,
     body = {
       'query' : {
         'range' : {
           'postDate' : {
               'from' : '20100101' 'to' : '20140101'
           }
         }
       }
     }
)


上面的意思是,查询这个时间段里面的数据。

1
2
3
4
5
6
7
8
9
10
11
res  =  es.search(
     index = 'belajar' ,
     doc_type = 'pesan' ,
     body = {
       'query' : {
         'match' : {
           'user' 'xiaorui'
         }
       }
     }
)


上面是精确的匹配,匹配user值为 xiaorui 的数据。


一些详细的语法就不在描述了,大家看下官方的文档,然后再python引用就行了。


原文:http://rfyiamcool.blog.51cto.com/1030776/1420811


下面的数据,是我用python的elasticsearch库,打的随机数据。  关键是kibana会把es里面的数据,相应的统计好的。


wKioL1OKuNyASriYAAJVytUU3Xk029.jpg


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
curl -XGET  'http://10.10.10.66:9200/_all/_search?pretty'  -d '{
   "facets" : {
     "0" : {
       "date_histogram" : {
         "field" "@timestamp" ,
         "interval" "1m"
       },
       "global" true ,
       "facet_filter" : {
         "fquery" : {
           "query" : {
             "filtered" : {
               "query" : {
                 "query_string" : {
                   "query" "*"
                 }
               },
               "filter" : {
                 "bool" : {
                   "must" : [
                     {
                       "match_all" : {}
                     }
                   ]
                 }
               }
             }
           }
         }
       }
     }
   },
   "size" : 0
}'


wKiom1OKuRaiE0KeAAOsPXk8l3I020.jpg


支持很多的语法,可以随意的query查询,你想要的组合数据。

wKioL1OLEvOxr1a_AAEoe60ImUQ878.jpg

还可以多条件查询

wKioL1OLFleQtjx1AAJuetRLjRU990.jpg


其中遇到了一个问题,kibana3 时间貌似是UTC的,图表显示的时候,总是差距8个小时,需要调整源码,改成北京时间。




其实对我来说,我还是更喜欢用mongodb,他的bjson,让我爽到天,哈 ! 要是量大的话,用mongodb的分片,elasticsearch的dsl语法,还是让我有些看不下去。 我这里正在做通知平台,以前都是把数据放在mongodb,然后用各种图表展示。  我发现kibana很绚丽,就在研究kibana的一些个特性, 他只是为elasticsearch存在的。 所以大家也不要在尝试改掉kibana,直接把数据插入到elasticsearch,然后通过kibana显示就行了。





 本文转自 rfyiamcool 51CTO博客,原文链接:http://blog.51cto.com/rfyiamcool/1420811 ,如需转载请自行联系原作者

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
2月前
|
缓存 Rust 算法
从混沌到秩序:Python的依赖管理工具分析
Python 的依赖管理工具一直没有标准化,主要原因包括历史发展的随意性、社区的分散性、多样化的使用场景、向后兼容性的挑战、缺乏统一治理以及生态系统的快速变化。依赖管理工具用于处理项目中的依赖关系,确保不同环境下的依赖项一致性,避免软件故障和兼容性问题。常用的 Python 依赖管理工具如 pip、venv、pip-tools、Pipenv、Poetry 等各有优缺点,选择时需根据项目需求权衡。新工具如 uv 和 Pixi 在性能和功能上有所改进,值得考虑。
101 35
|
3月前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品消费模式分析的深度学习模型
使用Python实现智能食品消费模式分析的深度学习模型
162 70
|
2月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python实现基于矩阵分解的长期事件(MFLEs)时间序列分析
在现代数据分析中,高维时间序列数据的处理和预测极具挑战性。基于矩阵分解的长期事件(MFLEs)分析技术应运而生,通过降维和时间序列特性结合,有效应对大规模数据。MFLE利用矩阵分解提取潜在特征,降低计算复杂度,过滤噪声,并发现主要模式。相比传统方法如ARIMA和深度学习模型如LSTM,MFLE在多变量处理、计算效率和可解释性上更具优势。通过合理应用MFLE,可在物联网、金融等领域获得良好分析效果。
85 0
使用Python实现基于矩阵分解的长期事件(MFLEs)时间序列分析
|
2月前
|
数据采集 数据可视化 数据挖掘
金融波动率的多模型建模研究:GARCH族与HAR模型的Python实现与对比分析
本文探讨了金融资产波动率建模中的三种主流方法:GARCH、GJR-GARCH和HAR模型,基于SPY的实际交易数据进行实证分析。GARCH模型捕捉波动率聚类特征,GJR-GARCH引入杠杆效应,HAR整合多时间尺度波动率信息。通过Python实现模型估计与性能比较,展示了各模型在风险管理、衍生品定价等领域的应用优势。
392 66
金融波动率的多模型建模研究:GARCH族与HAR模型的Python实现与对比分析
|
4月前
|
数据采集 缓存 定位技术
网络延迟对Python爬虫速度的影响分析
网络延迟对Python爬虫速度的影响分析
|
2月前
|
并行计算 安全 Java
Python GIL(全局解释器锁)机制对多线程性能影响的深度分析
在Python开发中,GIL(全局解释器锁)一直备受关注。本文基于CPython解释器,探讨GIL的技术本质及其对程序性能的影响。GIL确保同一时刻只有一个线程执行代码,以保护内存管理的安全性,但也限制了多线程并行计算的效率。文章分析了GIL的必要性、局限性,并介绍了多进程、异步编程等替代方案。尽管Python 3.13计划移除GIL,但该特性至少要到2028年才会默认禁用,因此理解GIL仍至关重要。
180 16
Python GIL(全局解释器锁)机制对多线程性能影响的深度分析
|
2月前
|
数据可视化 算法 数据挖掘
Python时间序列分析工具Aeon使用指南
**Aeon** 是一个遵循 scikit-learn API 风格的开源 Python 库,专注于时间序列处理。它提供了分类、回归、聚类、预测建模和数据预处理等功能模块,支持多种算法和自定义距离度量。Aeon 活跃开发并持续更新至2024年,与 pandas 1.4.0 版本兼容,内置可视化工具,适合数据探索和基础分析任务。尽管在高级功能和性能优化方面有提升空间,但其简洁的 API 和完整的基础功能使其成为时间序列分析的有效工具。
95 37
Python时间序列分析工具Aeon使用指南
|
2月前
|
机器学习/深度学习 运维 数据可视化
Python时间序列分析:使用TSFresh进行自动化特征提取
TSFresh 是一个专门用于时间序列数据特征自动提取的框架,支持分类、回归和异常检测等机器学习任务。它通过自动化特征工程流程,处理数百个统计特征(如均值、方差、自相关性等),并通过假设检验筛选显著特征,提升分析效率。TSFresh 支持单变量和多变量时间序列数据,能够与 scikit-learn 等库无缝集成,适用于大规模时间序列数据的特征提取与模型训练。其工作流程包括数据格式转换、特征提取和选择,并提供可视化工具帮助理解特征分布及与目标变量的关系。
110 16
Python时间序列分析:使用TSFresh进行自动化特征提取
|
3月前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品消费习惯分析的深度学习模型
使用Python实现智能食品消费习惯分析的深度学习模型
200 68
|
2月前
|
数据采集 缓存 API
python爬取Boss直聘,分析北京招聘市场
本文介绍了如何使用Python爬虫技术从Boss直聘平台上获取深圳地区的招聘数据,并进行数据分析,以帮助求职者更好地了解市场动态和职位需求。

热门文章

最新文章