【ES】代码例子

#!/usr/bin/env python
#coding=utf-8

from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search

class ES(object):
    def __init__(self):
        self.es = Elasticsearch(hosts="localhost:9200",timeout=60)
        
    def get_es_data(self, query = ""):
        resp = self.es.search(index="test", body=query, scroll="1m",size=10000)
        scroll_id = resp['_scroll_id']
        resp_docs = resp["hits"]["hits"]
        total = resp['hits']['total']
        print total
        count = len(resp_docs)
        datas = resp_docs
        while len(resp_docs) > 0:
            scroll_id = resp['_scroll_id']
            resp = self.es.scroll(scroll_id=scroll_id, scroll="1m")
            resp_docs = resp["hits"]["hits"]
            datas.extend(resp_docs)
            count += len(resp_docs)
            if count >= total:
                break
        return datas
    
    def get_ip_data(self, start_time, end_time, ip):
        query = {"query":
                    { "bool":{
                        "filter":{"range":{"timestamp":{"gte":start_time, "lt":end_time}}},
                        "must":{"match_phrase":{"src_ip": ip}}
                        }
                    }
                }
        data = self.get_es_data(query)
        print len(data)
        data = [d["_source"] for d in data]
        print len(data)
        print data[0:5]
        return data
        
                
    def get_ips(self, start_time, end_time):
        query = {
        "query":{
            "bool":{
                "filter":{"range":{"timestamp":{"gte":start_time, "lt":end_time}}},
                "must":{"exists":{"field":"src_ip"}}
                }
            }
        }
        data = self.get_es_data(query)
        ips = [d["_source"]["src_ip"] for d in data]
        print len(ips)
        ips = list(set(ips))
        print len(ips)
        print ips
        return ips
        
        
if __name__ == "__main__":
    es_obj = ES()
    #es_obj.get_ips("2017-06-01T00:00:00", "2017-06-01T01:00:00")
    es_obj.get_ip_data("2016-11-14T00:00:00", "2016-11-15T00:00:00","192.168.0.45")

 

posted @ 2017-06-05 21:52  匡子语  阅读(461)  评论(0编辑  收藏  举报