您的位置:首页 > 其它

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

2017-04-20 11:44 465 查看
我们前面对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


最后我们发现之前备份的数据确实恢复啦:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: