设定副本和切片数量
1 | number_of_replicas 是数据备份数,如果只有一台机器,设置为0 |
默认情况下每个索引都会生成5个切片,当然会占用大量磁盘空间。如果是对于安全性要求一般的情况下可以通过设置模板来改变数量。
配置模板文件
- index的名字必须要和指定的json文件中的templete名相匹配,定义的mapping才会生效。logstash的output配置的template_name名可以随便。
- 对于按照日期生成的规则解决办法,就是将template名末尾加一个*号通配符即可:
1
"template":"logstash-nginx_joy_app*"
1 | vim /usr/local/elk/logstash/config/es_nginx.json |
配置logstash文件
1 | output { |
这样就按照模板规则来生成对应索引了。
日常语法
按照字段搜索
1 | 字段名: 值 |
字符串查询
查询一个或者多个的短语1
"短语"
正则查询
1 | status: 50* |
范围查询
允许一个字段值在某个区间。[] 包含该值,{}不包含。1
status: {200 TO *}
布尔查询
布尔运算符(AND,OR,NOT)允许通过逻辑运算符组合多个子查询。
运算符AND/OR/NOT必须大写。
NOT type: mysql
mysql.method: SELECT AND mysql.size: [10000 TO *]
(mysql.method: INSERT OR mysql.method: UPDATE) AND responsetime: [30 TO *]
插件
Logstash中的 logstash-filter-useragent 插件可以帮助我们过滤出浏览器版本、型号以及系统版本。1
2
3
4
5
6if [user_ua] != "-" {
useragent {
target => "agent" #agent将过来出的user agent的信息配置到了单独的字段中
source => "user_ua" #这个表示对message里面的哪个字段进行分析
}
}
跨多个es节点的负载均衡
如果想使用kibana访问es集群,那么只需要按照如下操作即可:
- 安装Elasticsearch
将节点配置为仅协调节点。在配置文件中配置:
1
2
3
4
5
6
7#3。您希望此节点既不是主节点,也不是数据节点,也不是摄取节点,但是
#充当“搜索负载均衡器”(从节点获取数据,
#聚合结果等)
#
node.master:false
node.data:false
node.ingest:false配置es节点加入集群
cluster.name:xxxx
,注意保持一致- 将该节点启动后使用kibana调用当前es地址
- kibana.yml 配置多个es地址:
1
2
3elasticsearch.hosts:
- http:// elasticsearch1:9200
- http:// elasticsearch2:9200
查询
1 | /_search:所有索引,所有type下的所有数据都搜索出来 |
时区问题
1 | filter { |
状态检查
1 | 1. elasticsearch启动后查看是否启动成功: |
磁盘扩容流程重启节点机器的流程
1 | path.data : /opt/data1,/opt/data2 |
关闭自动平衡1
2
3
4
5
6curl -XPUT "http://xxxx:9200/_cluster/settings" -d'
{
"transient" : {
"cluster.routing.allocation.enable" : "none"
}
}'
重启节点
开启平衡1
2
3
4
5
6curl -XPUT "http://xxxx.52:9200/_cluster/settings" -d'
{
"transient": {
"cluster.routing.allocation.enable": "all"
}
}'