0%

健康状态red问题查找

有一天查数据的时候突然报错了,然后看了一下索引,发现该索引的health为red,先看一下索引层级的健康状况

1
GET _cluster/health?level=indices

索引层级健康状态

可以看到所有的分片都未分配

阅读全文 »

elasticsearch基本操作

基于6.8.x版本

统计操作

计算集群中的文档数量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
GET _count?pretty
{
"query":{
"match_all": {}
}
}


{
"count": 5091327,
"_shards": {
"total": 10,
"successful": 10,
"skipped": 0,
"failed": 0
}
}
阅读全文 »

elasticsearch6.x写入优化

translog 调整

冲刷操作是将分段从内存移到磁盘,并清除事务日志

默认的配置是

1
2
3
4
5
6
7
8
9
10
11
12
13
"index":{
"translog": {
"generation_threshold_size": "64mb",
"flush_threshold_size": "512mb",
"sync_interval": "5s", // 每隔5s将translog写到磁盘
"retention": {
"size": "512mb",
"age": "12h"
},
"durability": "REQUEST"
}
}

也就是说每个请求都会进行flush,这样保证了数据不会丢失,但是写入性能会很差,可以设置为异步,持久化策略为周期性和一定大小的时候flush

1
2
3
4
5
6
"index": {
"translog": {
"sync_interval": "60s",
"durability": "async"
}
}

这样就调整为60s(sync_interval)刷新一次或者当超过512m(flush_threshold_size)进行刷新

使用批量写入

使用bulk进行批量操作

增加segments的刷新时间

segment作为最小的检索单元,需要将多个segment检索到的数据进行排序合并,调整refresh_interval参数,该时间为文档被索引到数据搜索可见时间间隔,如果对于实时性不那么高的话,可以适当调高,增加该值可以使得更大的部分flush并减少未来的合并压力

刷新之后搜索才能命中新索引的数据

1
index.refresh_interval: 30s

VMware网络模式

桥接模式

相当于独立虚拟的一台电脑,和宿主机为平行关系,和宿主机使用的同一块网卡

Host-only

虚拟机可以访问虚拟机和宿主机,其他的机器都不可以访问,宿主机可以访问虚拟机,使用的是虚拟的net1网卡

NAT

虚拟机可以访问虚拟机、宿主机和外网,但是只有宿主机可以访问虚拟机,使用的虚拟的net8网卡

DockerFile

Dockerfile就像是一个镜像的说明书

  • FROM基础镜像,先下载这个基础镜像,然后从这个镜像启动一个容器,并且登陆到容器里面,第一条指令必须是FROM
  • MAINTAINER 指定镜像作者
  • RUN运行一个命令,在容器中运行该命令
  • CMD 执行镜像中的应用程序,文件中只能有一个CMD命令,如果有多个,只执行最后一个
  • COPY/ADD将一些文件添加到容器中,add除了copy功能外还有解压功能
  • 设置启动命令ENTRYPOINT,在容器运行的时候作为主程序执行
  • EXPOSE 暴露端口
  • VOLUME 指向一个目录,用来关联宿主机目录和容器目录
阅读全文 »