python elasticsearch使用

python elasticsearch操作

案例

import datetime
from elasticsearch import Elasticsearch
from celery_task.celery import app


def escon():
    es = Elasticsearch(
        ['localhost:9200'],  # 连接集群,以列表的形式存放节点的ip地址
        sniff_on_start=True,  # 连接前测试
        sniff_on_connection_fail=True,  # 节点无响应时刷新节点
        sniff_timeout=60  # 设置超时时间
    )
    return es


@app.task
def esadd(result, ip):
    '''新增一条文档'''
    es = escon()
    times = datetime.datetime.now() - datetime.timedelta(days=0, hours=8) # es内存储的时间和本地有8小时的时间差
    times1 = datetime.datetime.now()
    str_time = times.strftime("%Y-%m-%d %H:%M:%S")
    str_time1 = times1.strftime("%Y-%m-%d %H:%M:%S")
    try:
        data = es.search(index="translate_erlog", doc_type='tranerLog')['hits']['hits'][-1] # 查看索引是否存在
    except:
        data = []
    if data:
        eid = int(data['_id']) + 1
        m = es.index(index="translate_erlog", doc_type="tranerLog", id=eid,
                     body={'result': result, 'ip': ip, 'addtime': str_time1, 'timestamp': str_time}) # 索引存在则进行添加
    else:
        m = es.create(index="translate_erlog", doc_type='tranerLog', id=1,
                      body={'result': result, 'ip': ip, 'addtime': str_time1, 'timestamp': str_time}) # 索引不存在就创建
    print(m)


@app.task
def del_esdata():
    '''每天0点0分开始删除30天以前的数据'''
    es = escon()
    times = datetime.datetime.today() - datetime.timedelta(days=30, hours=8)
    str_time = times.strftime("%Y-%m-%d %H:%M:%S")
    body = {'query': {
        "range": {
            "timestamp": {
                "lt": str_time
            }
        }}}
    es.delete_by_query(index='translate_log', doc_type='tranLog', body=body)
    es.delete_by_query(index='translate_erlog', doc_type='tranerLog', body=body)
    print('delete over')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值