查看“ElasticSearch:运维相关”的源代码
←
ElasticSearch:运维相关
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:ElasticSearch教程]] == 关于 == 【转自:[https://www.orchome.com/Elasticsearch/index https://www.orchome.com/Elasticsearch/index]】 == 设置elasticsearch的默认分区数和副本数 == elasticsearch 5.1版本,默认在配置中可设置分区和副本的数量现在不能使用了。 修改现有elasticsearch的默认副本数:(如下,修改:副本数为0) <syntaxhighlight lang="bash" highlight=""> curl -XPUT https://192.168.x.x:9200/_settings -d ' { "index":{ "number_of_replicas":0 } } </syntaxhighlight> 设置elasticsearch默认模板:(如下,修改:分区数为10,副本数为0) <syntaxhighlight lang="bash" highlight=""> curl -XPUT https://192.168.x.x:9200/_template/log -d '{ "template": "log-*", "settings": { "number_of_shards": 10, "number_of_replicas": "0" } } </syntaxhighlight> * 这样后面生成 log-* 的索引都会按照这个模板来了。 * 参见:【'''[https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html 模板官网页面]'''】 == Elasticsearch删除历史日志 == 示例,从 kafka 采集日志到 es 的相关 logstash 的配置: <syntaxhighlight lang="bash" highlight=""> input{ kafka{ topics => ["logs-normal","logs-error","logs-point"] bootstrap_servers => "192.168.x.x:9092,192.168.x.x:9092,192.168.x.x:9092" codec => json group_id=> "logstash" codec => multiline { pattern => "\s" negate=>true what => "previous" } } } filter{ grok{ match => {"message" => "\[(?<datetime>\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2},\d{3})"} } date{ match => ["datetime", "yyyy-MM-dd HH:mm:ss,SSS"] target => "@timestamp" } mutate { remove_field => ["datetime"] } } output{ elasticsearch { action => "index" hosts => ["192.168.x.x:9200","192.168.x.x:9200","192.168.x.x:9200"] index => "applog-%{+YYYY.MM.dd}" } } </syntaxhighlight> 如上,“index => "applog-%{+YYYY.MM.dd}"”会根据 timestamp 的时间来生成每天的日志块,那么删除日志也根据“索引+日期”来删除。 如: <syntaxhighlight lang="bash" highlight=""> curl -XDELETE "192.168.101.123:9200/applog-2016.12.26" </syntaxhighlight> 查看日志存储的位置,磁盘已经释放了。 == ElasticSearch定时删除数据 == 如下脚本可以定时删除数据: : (新建 delete_es_by_day.sh 脚本) <syntaxhighlight lang="bash" highlight=""> #!/bin/sh # example: sh delete_es_by_day.sh logstash-kettle-log logsdate 30 index_name=$1 daycolumn=$2 savedays=$3 format_day=$4 if [ ! -n "$savedays" ]; then echo "the args is not right,please input again...." exit 1 fi if [ ! -n "$format_day" ]; then format_day='%Y%m%d' fi sevendayago=`date -d "-${savedays} day " +${format_day}` curl -XDELETE "10.130.3.102:9200/${index_name}/_query?pretty" -d " { "query": { "filtered": { "filter": { "bool": { "must": { "range": { "${daycolumn}": { "from": null, "to": ${sevendayago}, "include_lower": true, "include_upper": true } } } } } } } }" echo "ok" </syntaxhighlight> 参数说明: # 索引名; # 日期字段名; # 保留最近几天数据,单位天; # 日期格式,可不输(默认形式20160101) == ElasticSearch中根据查询结果删除数据(delete by query) == 原有的方法在2.0版本中已经删除了,提供了delete by query插件来实现这个功能。 # 安装插件: #: <syntaxhighlight lang="bash" highlight=""> cd /path/to/ElasticSearch sudo bin/plugin install delete-by-query </syntaxhighlight> #: 成功安装后: #: [[File:Elasticsearch:安装delete-by-query插件.png|400px]] #* 集群环境下必须在每个结点上安装,安装之后要重启结点才能使这个插件生效。 #*(安装和重启之后就可以像2.0以前的版本一样使用delete by query了。) # 执行删除命令: #: <syntaxhighlight lang="bash" highlight=""> curl -XDELETE 'https://10.0.21.xx:9200/applog/logs/_query?pretty' -d ' { "query": { "filtered": { "filter": { "range": { "@timestamp": { "lte": "2016-11-21" } } } } } }' </syntaxhighlight> # 合并:????什么鬼???? #: <syntaxhighlight lang="bash" highlight=""> curl -XPOST 'https://10.0.21.xx:9200/applog/_optimize?max_num_segments=1' </syntaxhighlight>
返回至“
ElasticSearch:运维相关
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息