ElasticSearch速学 - 自定义分析器、备份和恢复索引数据

我们前面对ElasticSearch搜索api里的分析器、分词、分词过滤器、字符过滤器有了一个简单的学习,实际上在我们正式使用当中肯定要自定义分析器,系统自带的分析器可能是不能满足我们的业务需求。

我们还可能使用一些第三方的分词器,比如我们的中文分词怎么分。

自定义分析器

官方文档:
https://www.elastic.co/guide/en/elasticsearch/reference/5.3/analysis-custom-analyzer.html
这里写图片描述

回顾我们之前创建索引的方式:

PUT blog/users/101
{
  "name":"jack"
}

这样会自动创建索引blog以及类型users,其实这样是不太好的,正式创建的时候其实应该对一些更详细的信息进行设置:比如我们要设置好一个分析器,如果我们是中文内容,那么我们肯定要使用一些中文分词插件。如果没有中文,那么就没有必要使用中文分词器,所以我们可以针对不同的类型来使用不同的分词器。

备份索引

出现上面索引已经存在的问题怎么办呢?我们需要把这个索引给删掉(我们之间创建的索引没有指定分析器)。

我们先来学习一个“备份”功能,我们在实际开发当中需要对数据进行一个备份。
https://www.elastic.co/guide/en/elasticsearch/reference/5.3/modules-snapshots.html

按照官方文档,我们要先创建一个仓库,备份的东西全部放在这个仓库文件夹里面。
(因为我这里2个节点都在一个服务器上,所以不需要配置共享文件夹。实际生产环境肯定是多台服务器,仓库目录需要共享)

1、配置仓库路径

#每个节点elasticsearch.yml加入:
path.repo: ["/home/admin/esbackup"]

说明:admin是我这里登录用户名,也是运行es实例等用户名。另外不要忘记在该目录下创建esbackup目录。

配置好path.repo之后,我们需要重启所有节点。

2、补充知识:关于重启kibana

fuser -n tcp 5601

可以看到进程id,kill -9 进程ID杀掉。
fuser可以显示出当前哪个程序在使用磁盘上的某个文件、挂载点、网络端口,并给出程序进程点详细信息(具体用法百度)。

3、创建仓库

PUT /_snapshot/mybackup
{
  "type": "fs",
  "settings": {
    "location": "/home/admin/esbackup/blog"
  }
}

创建一个名为mybackup的仓库,位置是/home/admin/esbackup/blog,其中的blog是索引,给这个索引备份。

执行结果如下:

{
  "acknowledged": true 
}

true代表创建成功。

这里写图片描述
同时我们也发现esbackup 目录下多了一个blog 目录。
但是blog 目录里什么都没有,是空的。
这里写图片描述

创建了仓库,我们就可以来获取这个仓库信息:

GET /_snapshot/mybackup
#注意`mybackup`是我们上面创建仓库的名称

这里写图片描述

4、开始备份索引

这里写图片描述

wait_for_completion=true
#备份本来是异步的,加这个参数就是我们需要等待备份完成的结果
#实际开发数据流大,不会这样搞
#我们这里学习演示 需要

现在我们来看看/home/admin/esbackup/blog目录下,就多了一些文件了:
这里写图片描述

恢复索引之前,我们先删除索引

这里写图片描述
索引还存在的。
下面删除索引:
这里写图片描述
删除索引之后:
这里写图片描述

诶,删掉索引之后,我们现在可以重新创建索引了(加入分析器的方式)
https://www.elastic.co/guide/en/elasticsearch/reference/5.3/analysis-custom-analyzer.html

PUT blog
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_custom_analyzer": {
          "type":      "custom",
          "tokenizer": "standard",
          "char_filter": [
            "html_strip"
          ],
          "filter": ["lowercase"]
        }
      }
    }
  }
}

这里写图片描述
我们可以查看刚才创建的索引的设置:
这里写图片描述

恢复备份

现在我们把之前删掉的数据恢复出来(我们已经备份了)

1、关掉索引

POST blog/_close

这里写图片描述

2、正式恢复备份

https://www.elastic.co/guide/en/elasticsearch/reference/5.3/modules-snapshots.html

POST _snapshot/mybackup/bak1/_restore?wait_for_completion=true
{
  "indices": "blog"
}

这里写图片描述

3、打开索引

POST blog/_open

最后我们发现之前备份的数据确实恢复啦:
这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值