ElasticSearch 关闭索引

这篇具有很好参考价值的文章主要介绍了ElasticSearch 关闭索引。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 ElasticSearch  数据库作为日志服务器收集日志,随着时间,日志量增加,集群会变得越来越慢,我们就需要去关闭历史的索引,每天去执行计划任务关闭索引,如果日志量过大也可以删除日志文章来源地址https://www.toymoban.com/news/detail-599301.html

# -*- encoding: utf-8 -*-
"""
@File    : es_index_close.py
"""

import requests, paramiko, datetime
from dateutil.relativedelta import relativedelta
from time import sleep

# 企业微信机器人,发送消息
def msg(text):
    # 调用机器人
    # 企业微信机器人
    rebot = 'xxxxxx'
    headers = {'Content-Type': 'application/json;charset=utf-8'}
    api_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=" + rebot

    data = {
        "msgtype": "markdown",
        "markdown": {
            "content": text,
        }
    }
    r = requests.post(api_url, headers=headers, json=data)
    print(r.text)

# 得到一个Overssh的返回值
def exec_command(hostname, port, username, key_name, command):
    file_list = ""
    try:
        ssh = paramiko.SSHClient()  # 创建SSH对象
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  # 允许连接不在know_hosts文件中的主机
        # ssh.connect(hostname=hostname, port=port, username=username, password=key_name)  # 连接服务器
        ssh.connect(hostname=hostname, port=port, username=username, timeout=5,
                    pkey=paramiko.RSAKey.from_private_key_file(key_name))  # 连接服务器
        stdin, stdout, stderr = ssh.exec_command(command)

        file_list = str(stdout.read(), encoding="utf-8")
        ssh.close()  # 关闭连接
    except:
        print("exec_command error !!!")

    return file_list

# 获取日期格式,根据不同的index 类型
def get_expried_date(index_type,expried_date):
    # 获取过期月日期格式类型
    if index_type == 1:
        dt_m = (datetime.date.today() - relativedelta(days=expried_date)).strftime('%Y.%m.%d')
    elif index_type == 2:
        dt_m = (datetime.date.today() - relativedelta(days=expried_date)).strftime('%Y%m%d')
    # print(dt_m)
    return dt_m


def close_es_index_v2(es_list):
    for es_instance in es_list:
        es_info = es_list[es_instance]
        print('#### 开始关闭' + es_instance + ' 的索引#### ')
        expried_date = get_expried_date(es_info['idx_t'], es_info['expried_date'])
        command = "curl -k -u %s:%s http://%s:9200/_cat/indices/*%s*? | grep open | awk '{print $3}'" \
                      %(es_info['es_user'], es_info['es_pw'], es_info['es_host'],expried_date)
        # print(command)
        index_list = exec_command(es_info['host'], es_info['port'], es_info['host_user'], es_info['host_pw'], command)
        if index_list:
            index_list = index_list.splitlines()
            for index_name in index_list:
                command = "curl -XPOST -k -u %s:%s http://%s:9200/%s/_close/" \
                              %(es_info['es_user'], es_info['es_pw'], es_info['es_host'],index_name)
                print(command)
                exec_command(es_info['host'], es_info['port'], es_info['host_user'], es_info['host_pw'], command)
            text = '#### Elasticsearch 关闭 ' + es_instance + ' 的索引成功!!! #### '
        else:
            text = '#### Elasticsearch 关闭 ' + es_instance + ' 未获取到索引值!!! #### '
        print(text)
        msg(text)

def main():
    '''
    es_list 中 host      ssh 跳板机ip
    es_list 中 host_pw   ssh 跳板机 sshkey
    es_list 中 idx_t     1代表2021.08; 2代表202108
    '''
    es_list = {
         'ES_host':
            {'host': 'xxx', 'port': 22, 'host_user': 'root', 'host_pw': './keys/xxx_rsa',
             'es_host': 'xxx', 'es_user': 'admin', 'es_pw': 'xxx', 'idx_t': 2, 'expried_date': 14},

        }
    close_es_index_v2(es_list)

if __name__ == '__main__':
    main()

到了这里,关于ElasticSearch 关闭索引的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • elasticsearch使用脚本 滚动关闭索引,更新index setting

         在旧的索引中更新mapping时,新增了分词器(分词器已经在模板中添加),但是在更新mapping时报错: 查看elasticsearch官网,发现不允许在已经存在的索引中动态更新分词器,只能先将索引close,更新分词器,然后再打开 Update index settings API | Elasticsearch Guide [8.3] | Elastic 2.1 由

    2024年02月08日
    浏览(49)
  • elasticsearch 跨索引联合多条件查询

    Elasticsearch 是一个免费且开放的分布式搜索和分析引擎。适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据。Elasticsearch 在 Apache Lucene 的基础上开发而成,以其简单的 REST 风格 API、分布式特性、速度和可扩展性而闻名,是 Elastic Stack 的核心组

    2023年04月09日
    浏览(39)
  • 【ElasticSearch】ElasticSearch Java API的使用——常用索引、文档、查询操作(二)

    Elaticsearch ,简称为es,es是一个开源的 高扩展 的 分布式全文检索引擎 ,它可以近乎 实时的存储 、 检索数据; 本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。es也使用java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的 目的

    2024年01月16日
    浏览(86)
  • ElasticSearch---查询es集群状态、分片、索引

    查看es集群状态: 如果?后面加上pretty,能让返回的json格式化。 加上?v的返回结果,如下: 解释如下: 查看es分片信息: 查看es分片信息,模糊匹配,比如匹配test: 返回信息如下: 解析如下: 查看状态为unassigned的es分片信息: 查看es索引 查看es所有索引: indices表示索引,是

    2024年02月02日
    浏览(40)
  • ElasticSearch学习简单使用(索引、文档、分页查询、多条件查询)

    APIfox接口在线文档 安装连接 下载链接(各个系统,也包括docker) 打开 我下载的时window版本,直接就是zip压缩包解压后直接使用 执行bin目录下的这个bat文件,就会自动打开终端运行了。 大部分使用http请求进行学习。 你需要一个接口工具,postman,APIfox,或者一些浏览器插件

    2024年02月03日
    浏览(43)
  • 原生语言操作和spring data中RestHighLevelClient操作Elasticsearch,索引,文档的基本操作,es的高级查询.查询结果处理. 数据聚合.相关性系数打分

    ​ Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasti

    2024年02月05日
    浏览(83)
  • (十)ElasticSearch高级使用【别名,重建索引,refresh操作,高亮查询,查询建议】

    在开发中,随着业务需求的迭代,较⽼的业务逻辑就要⾯临更新甚⾄是重构,⽽对于es来说,为了 适应新的业务逻辑,可能就要对原有的索引做⼀些修改,⽐如对某些字段做调整,甚⾄是重建索 引。⽽做这些操作的时候,可能会对业务造成影响,甚⾄是停机调整等问题。由此

    2024年02月02日
    浏览(71)
  • ElasticSearch 实战:ES查询索引文档的6种方法

    在Elasticsearch中,查询索引文档的方法多种多样,这里列举了6种常见的查询方法,其中包括: 简单查询(String Query) 这是最基本的全文搜索,只需在URL后面附加查询字符串即可。例如,对索引 my_index 中的所有文档执行模糊匹配查询: Match Query 类似于简单查询,但提供了更多的

    2024年04月12日
    浏览(45)
  • ElasticSearch7.3学习(十六)----RestHighLevelClient Java api实现索引的创建、删除、是否存在、关闭、开启

    注意:导入的包区别,不同的包创建索引的方式不同。博主亲身实践,具体体现在createIndexRequest.mapping()里面。读者可自行试验。  由此可以猜想一下: 可以看到上述两种方式导入的包的子类名是相同的,但是具体对索引的操作方式可能是不同的。具体的区别博主暂时还不清

    2024年02月16日
    浏览(57)
  • 如果elasticsearch要实现在大于两个索引之间关联查询怎么实现

    Elasticsearch可以通过多种方式在多个索引之间进行关联查询。 一种常用的方法是使用关联查询(join query), 这需要在索引和类型中使用 _join 字段来存储关联关系。 另一种方法是使用查询时连接(query time join),使用过滤器上下文来连接不同索引中的文档。 还可以使用 Elasticsearch 的聚

    2024年02月08日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包