博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 读取es数据
阅读量:6526 次
发布时间:2019-06-24

本文共 3474 字,大约阅读时间需要 11 分钟。

  hot3.png

参考https://www.cnblogs.com/ghj1976/p/5293250.html也可以看我的印象笔记term 过滤term主要用于精确匹配哪些值,比如数字,日期,布尔值或 not_analyzed 的字符串(未经分析的文本数据类型):terms 过滤terms 跟 term 有点类似,但 terms 允许指定多个匹配条件。 如果某个字段指定了多个值,那么文档需要一起去做匹配:{     "terms": {         "tag": [ "search", "full_text", "nosql" ] #tag字段对应的值有三种        } }exists 和 missing 过滤exists 和 missing 过滤可以用于查找文档中是否包含指定字段或没有某个字段,类似于SQL语句中的IS_NULL条件. {     "exists":   {         "field":    "title"     } } range 过滤range过滤允许我们按照指定范围查找一批数据:match 匹配查询bool 查询bool 查询与 bool 过滤相似,用于合并多个查询子句。不同的是,bool 过滤可以直接给出是否匹配成功, 而bool 查询要计算每一个查询子句的 _score (相关性分值)。must:: 查询指定文档一定要被包含。must_not:: 查询指定文档一定不要被包含。should:: 查询指定文档,有则可以为文档相关性加分。以下查询将会找到 title 字段中包含 "how to make millions",并且 "tag" 字段没有被标为 spam。 如果有标识为 "starred" 或者发布日期为2014年之前,那么这些匹配的文档将比同类网站等级高:{     "bool": {         "must":     { "match": { "title": "how to make millions" }},         "must_not": { "match": { "tag":   "spam" }},         "should": [             { "match": { "tag": "starred" }},             { "range": { "date": { "gte": "2014-01-01" }}}         ]     } }
#-*-coding:utf-8import datetimefrom elasticsearch import Elasticsearch# 格式为:2016.7.19 的昨日日期#yesterday = (datetime.datetime.now()  + datetime.timedelta(days = -1)).strftime("%Y.%m.%d")# 格式为:2016-7-19 的昨日日期#filter_yesterday = (datetime.datetime.now()  + datetime.timedelta(days = -1)).strftime("%Y-%m-%d")# 格式为:2016.7.18 的前天日期#before_yesterday = (datetime.datetime.now()  + datetime.timedelta(days = -2)).strftime("%Y.%m.%d")# 请求elasticsearch节点的urlurl = "http://ip:9200/"# 使用的索引,因日期时区问题,所以要指定昨天和前天的索引名#index_name = "deploy_metrics_pro-{date},deploy_metrics_pro-{b_date}".format(date=yesterday,b_date=before_yesterday)index_name = "deploy_metrics_pro"# 实例化Elasticsearch类,并设置超时间为120秒,默认是10秒的,如果数据量很大,时间设置更长一些es = Elasticsearch(url,timeout=120)# DSL查询语法,在下面es.search使用data = {    "size": 10000000,   #指定每个分片最大返回的数据量,可根据日志量进行设置    "query" : {        "bool":{            # 指定要匹配的字符,这里是查找所有数据            "must" : {                      "term":{'type':'deployment'}                    },            "filter":{                "range":{                    "start_time_format":{                        "gt": "2018-01-29 00:00:00",                        "lt": "2018-01-30 00:00:00"                    }                },            },             #过滤,指定时间范围,这里设置成昨天0点到24点,代码上||-8h,因为ELK用的是UTC时间,跟北京时间误差8小时,所以要减8小时,这就是日志里的北京时间了            #"filter" : {             #   "range" : { "@timestamp" : {             #       "gt" : "{date}T00:00:00||-8h".format(date=filter_yesterday),            #        "lt" : "{date}T23:59:59||-8h".format(date=filter_yesterday),            #        }             #   }            #}        }    }}# 设置要过滤返回的字段值,要什么字段,就在这里添加,这样可以节约返回的数据量(带宽,内存等)return_fields = [    '_scroll_id',    'hits.hits._source.timestamp',    'hits.hits._source.@timestamp',    'hits.hits._source.project',    'hits.hits._source.username',    'hits.hits._source.start_time_format',]def main():    # 指定search_type="scan"模式,并返回_scroll_id给es.scroll获取数据使用    res = es.search(            index=index_name,            body=data,            search_type="scan",            scroll="1m"        )    scrollId=res["_scroll_id"]  # 获取scrollID    response= es.scroll(scroll_id=scrollId, scroll= "1m",filter_path=return_fields,)    print response    #print len(response['hits']['hits']) # 打印获取到的日志数量    # for hit in response['hits']['hits']:    #     print hit['_source']if __name__ == "__main__":    main()

转载于:https://my.oschina.net/u/1775013/blog/1619657

你可能感兴趣的文章
编译安装 DRBD
查看>>
红黑树探索笔记
查看>>
Git多账户设置
查看>>
学习React系列2-[解读]Thinking in React
查看>>
HTML与BODY的表现
查看>>
推荐6个国内外免费DNS解析服务商
查看>>
什么是知识图谱?
查看>>
浩鲸科技和京东加入 OpenMessaging 开源标准社区
查看>>
大神支招:你发现别人没有引用你的论文时怎么办? ...
查看>>
教育部发文要求各高校自查基因编辑相关研究项目,新年之前必须完成 ...
查看>>
大数据处理的核心技术有哪些?大数据平台方法 ...
查看>>
我从来不理解JavaScript闭包,直到有人这样向我解释它... ...
查看>>
「镁客早报」FDA试点项目将测试区块链,以遏制假药;努比亚折叠屏新品将亮相MWC2019 ...
查看>>
一个C#程序员学习微信小程序的笔记
查看>>
SpringCloud 配置文件交给 git 管理
查看>>
Fastjson 实体类JSON化过滤字段操作-PropertyFilter
查看>>
服务创新产品“在线智能问诊”——互联网平台建设 ...
查看>>
最全React技术栈技术资料汇总(收藏)
查看>>
还在写RAM policy授权脚本?试试通过Bucket Policy一键配置细颗粒度访问权限 ...
查看>>
袋鼠云研发手记 | 开源·数栈-扩展FlinkSQL实现流与维表的join ...
查看>>