elasticsearch 查询格式整理

GET some_index/_search
{
	"query" : {
		"term": {
			"field_name": "value"
		},
		"terms": {
			"field_name": ["value1", "value2"]
		}
		"match": {
			"field_name": "value"
		},
		"multi_match": {
			"fields": ["field1", "field2"],
			"query": "value"
		},
		"match_all": {},
		"match_phrase": {
			"field_name": "搜索连续的字符串字符"
		},
		"match_phrase_prefix": {
			"field_name": "前缀"
		},
		"fuzzy": {
			"field_name": "xxx"
		},
		"wildcard": {
			"field_name": "*feji?"
		},
		"range": {
			"field_name": {
				"lt": 12,
				"gt": 9
			}
		}
		"bool": {
			"must": [
			],
			"must_not": [
			],
			"should": [
			],
			"filter": [
			]
		}
	},
	"_source": {
		"include": [],
		"exclude": []
	},
	"post_filter":
Read the rest

Ubuntu18.04 安装 Docker

移除已经安装的 Docker

sudo apt-get remove docker docker-engine docker.io

安装依赖的库

sudo apt-get install  software-properties-common ca-certificates apt-transport-https

导入 Docker 官方 gpg key

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

添加 Docker 官方软件库源

sudo add-apt-repository  "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

更新所有软件库源

sudo apt-get update

安装 Docker

sudo apt-get install docker-ce

后台运行 Docker

sudo systemctl start docker

开机自动启动 Docker

sudo systemctl enable docker

查看 Docker 服务… Read the rest

Ubuntu 查看硬盘空间使用

最简单地,我们会使用 du 这个工具来查看,du 这个名字来源于 Disk Usage,比如:du -h -d 1 . 表示查看当前目录下的所有文件和目录的大小,其中 -d 1--depth 1 的简写,表示不递归显示所有目录的空间使用。

这个命令有一个缺点:如果不使用-d 1选项,会打印很长的输出,基本无法阅读,而如果使用-d 1选项,只能展示一个目录下的磁盘使用,如果想逐层查看,需要执行多次,每次执行都需要读取硬盘,效率很低。同时人看数字的效率不高,无法一眼认识到各个目录和文件的硬盘占用空间。

这里推荐一个 du 工具的升级版 ncdu,脑残 du,啊,不是,是 NCursors Disk Usage,NCursors 是很有名的 C 程序库,支持在控制台的交互操作。

ncdu 有两种使用方法,一种是一次性地分析和查看,运行 ncdu / 即可查看硬盘下所有目录文件的空间占用。另一种是先分析生成日志,运行 ncdu -o 分析文件导出路径 /,然后查看日志,运行 ncdu -f 分析文件导出路径

一般我倾向使用第二种,保留日志后,可以多次查看。Read the rest

Elasticsearch 使用 snapshot api 备份和恢复大规模数据

常见的数据库都会提供备份的机制,以解决在数据库无法使用的情况下,可以开启新的实例,然后通过备份来恢复数据减少损失。虽然 Elasticsearch 有良好的容灾性,但由于以下原因,其依然需要备份机制。

  1. 数据灾备。在整个集群无法正常工作时,可以及时从备份中恢复数据。
  2. 归档数据。随着数据的积累,比如日志类的数据,集群的存储压力会越来越大,不管是内存还是磁盘都要承担数据增多带来的压力,此时我们往往会选择只保留最近一段时间的数据,比如1个月,而将1个月之前的数据删除。如果你不想删除这些数据,以备后续有查看的需求,那么你就可以将这些数据以备份的形式归档。
  3. 迁移数据。当你需要将数据从一个集群迁移到另一个集群时,也可以用备份的方式来实现。

Elasticsearch 做备份有两种方式,一是将数据导出成文本文件,比如通过 elasticdumpesm 等工具将存储在 Elasticsearch 中的数据导出到文件中。二是以备份 elasticsearch data 目录中文件的形式来做快照,也就是 Elasticsearch 中 snapshot 接口实现的功能。第一种方式相对简单,在数据量小的… Read the rest

Ubuntu/Linux 进程内存占用排序

Try this:

  1. Go into top.
  2. Press F (i.e., Shift+F) to specify the sort field.
  3. Type N.  This will turn the lowercase n in the list into an uppercase N.
  4. Press Enter.  The list should now be sorted by memory usage.

Press ? or h at the main screen for more options.… Read the rest

Move Ubuntu/Linux to SSD from old hard disk

  1. Copy files from hard disk to SSD
  2. Modify UUID in /etc/fstab of the SSD
  3. Dealing with GRUB

Copy files to SSD

sudo cp -Tax /media/hd /media/ssd

Modify UUID /etc/fstab

Dealing with GRUB

sudo -s
for f in sys dev proc ; do mount --bind /$f /media/ssd/$f ; done
chroot /media/ssd
grub-install /dev/ssd
update-grub

You can also download Boot Repair to fix GRUB

sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair
enter image description here
Read the rest

使用journalctl查看系统日志

参考链接:https://www.digitalocean.com/community/tutorials/how-to-use-journalctl-to-view-and-manipulate-systemd-logs

日志文件有利于查看进程的执行状态,查明中途出现的问题等。以往,每个服务进程在运行前,一般都要先配置该服务在哪个目录写入日志文件。由于每个服务可以设置不同的日志文件路径,所以日志文件可能分布在硬盘的各个路径下。同时,由于日志不断输出,占用空间较多,所以一般会需要对日志文件进行拆分和压缩等工作,这部分逻辑不同服务需要单独实现,重复劳动较多。

目前,systemd 已经成为 Unix/Linux 系统中进程管理的标准之一,伴随进程管理功能一起的,是统一管理进程日志的 journald 服务进程。使用 systemd 运行的服务,服务执行过程中输出到标准输出和错误输出的文本都会被 journald 进程收集起来,统一管理。

常用场景和对应的执行方法如下:

  • 查看最近一次的启动日志:journalctl -b,使用 root 权限可以查看完整的日志。journalctl --list-boots 可以列出最
Read the rest