ElasticSearch速学 - IK中文分词器 、elasticdump数据导出导入、字段分词
2017-04-29 15:18
716 查看
我们前面简单的学习了
这些内置的分析器很多时候并不能满足我们的需求,比如处理中文的时候。
http://maven.apache.org/download.cgi
2、下载地址
分析器,包含了分词器、过滤器、字符过滤器等等。
这些内置的分析器很多时候并不能满足我们的需求,比如处理中文的时候。
比较流行的中文分析器组件
https://github.com/medcl/elasticsearch-analysis-ik安装maven
1、maven官网http://maven.apache.org/download.cgi
2、下载地址
wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz[/code]
3、解压tar zxvf apache-maven-3.5.0-bin.tar.gz
解压完成目录名称是apache-maven-3.5.0,该目录下还有以下文件或目录:bin boot conf lib LICENSE NOTICE README.txt
4、配置
需要配置环境变量,这里对当前用户进行修改,你要修改/etc/profile也可以。vi ~/.bash_profile #加入 export M2_HOME=~/apache-maven-3.5.0 #这个目录改成你自己的目录 #修改PATH PATH=$PATH:$HOME/bin:$M2_HOME/bin
保存并退出之后,执行:source ~/.bash_profile
5、查看maven是否安装成功mvn --version下载IK分词器
https://github.com/medcl/elasticsearch-analysis-ik/releases
安装文档下载对应版本,这里用的版本是5.3.0。
我们下载源码(熟悉一下maven)wget https://github.com/medcl/elasticsearch-analysis-ik/archive/v5.3.0.tar.gz --no-check-certificate #解压 tar zxvf v5.3.0.tar.gz #进入目录 cd elasticsearch-analysis-ik-5.3.0mvn package -e #用maven编译项目,生成target目录, #编译、测试代码,生成测试报告,生成jar/war文件
(如果第一次,这个过程很慢,请耐心等待)
生成出来的文件会在.../target/releases/elasticsearch-analysis-ik-5.3.0.zip
我们需要解压elasticsearch-analysis-ik-5.3.0.zip这个文件,然后把解压之后的内容全部拷贝到elasticsearch的安装目录的plugins/ik中(自己创建个ik目录)
最后 重启你的elasticsearch实例。
(注意,我们前面已经做了elasticsearch集群,我这里有2个es节点,都需要拷贝这个插件)查看你的插件
重新启动2个ES实例之后,再启动我们的”Kibana”这个工具:kibana-5.3.0-linux-x86_64/bin/kibana
使用ES的api查看插件:
测试一下分词
1、我们先准备几条新闻数据POST blog/news/901 { "title":"前端开发框架vue.js开发实践总结", "content":"如果你之前有用过angular.js或别的双向绑定的js库,那么你会有一种自来熟的感觉。当然,vue作为一个轻量的前端视图层工具,与angular相比,还是有很明显的区别的", "tags":"vue js angulars 前端 工具" } POST blog/news/902 { "title":"React.js初学者应该知道的9件事", "content":"我们从最基本的开始。React不是一个 MVC框架,好吧,它根本就不是一个框架。它只是一个渲染视图的库。如果你对 MVC 熟悉的话,你就会意识到 React.js只对应了V这部分,如果它插手了M或C的逻辑,你就需要考虑用其它方法来解了", "tags":"mvc 框架 react 逻辑" } POST blog/news/903 { "title":"大风厂\"一一六事件\"的总结报告", "content":"郑西坡得知护厂工人强烈抗议拆迁,山水集团就找来警察来维持秩序,陈岩石觉得是经济纠纷,怎么可以派警察,他赶忙给京州市警察局长赵东来打电话,赵东来长根本不知情,并且肯定说是假警察", "tags":"大风厂 总结报告 达康书记" } POST blog/news/904 { "title":"总的来说,大风厂事件的处理结果还是让领导满意的", "content":"侯亮平调查的好,领导很满意。此处省略一万字。", "tags":"大风厂 领导 侯亮平" }
我们现在就有了这些数据了:
2、测试
是不是我们安装好中文分词器就可以马上起到作用了呢?
并没有什么卵用,把“技术总结”这个词分成了这样,,,,
因为在加入分词器之后,需要对字段分别设置(哪些字段需要中文分词)修改mapping
mapping可以对索引字段进行类型描述一集搜索分析行为#针对索引 GET blog/_mapping#针对索引和类型 GET blog/news/_mapping
我们这里需要对mapping进行修改,但是很不幸的是,我们一开始就把索引建好了,数据也创建了。mapping都已经生成啦。
mapping的anlayzer设置文档:
https://www.elastic.co/guide/en/elasticsearch/reference/5.3/analyzer.html
我们试着创建一下mapping吧:PUT /blog { "mappings": { "news": { "properties": { "title": { "type": "text", "analyzer": "ik_max_word" } } } } }
这个时候我们想到了备份恢复数据的方法
1、创建一个备份PUT _snapshot/mybackup/bak2?wait_for_completion=true { "indices": "blog" }
2、删除索引DELETE blog
3、然后创建索引加上mappingPUT /blog { "mappings": { "news": { "properties": { "title": { "type": "text", "analyzer": "ik_max_word" } } } } }
这个时候我们来看一下:
4、恢复备份的数据
我们那么多新闻数据不能不要了啊#先要关闭索引啦 POST blog/_close##恢复备份的数据 POST _snapshot/mybackup/bak2/_restore?wait_for_completion=true { "indices": "blog" }#打开索引 POST blog/_open
5、恢复数据之后我们再来测试
什么?没有任何效果。这是因为我们之前的备份也会备份mapping信息,恢复数据的同时mapping信息也还原啦。由此我们得出,不能这么玩。elasticdump数据导出导入
我们需要导出纯数据(不要mapping信息)
https://github.com/taskrabbit/elasticsearch-dump
使用这个工具,需要node.js.
1、安装node.js#下载 wget https://nodejs.org/dist/v6.10.2/node-v6.10.2-linux-x64.tar.xz --no-check-certificate #解压 xz -d node-v6.10.2-linux-x64.tar.xz tar xvf node-v6.10.2-linux-x64.tar
把解压之后的文件夹拷贝的你目录(可以重命名)
2、依然要修改环境配置vi ~/.bash_profile
保存之后,执行命令(为了立即生效):source ~/.bash_profile
我们查看一下node.js是否安装成功?[admin@localhost bin]$ node --version v6.10.2 [admin@localhost bin]$ npm --version 3.10.10 [admin@localhost bin]$可以下载elasticdump
为了避免全局安装
我们创建一个目录estools,然后我们安装到这个目录中。cd estools/ npm install elasticdump使用elasticdump
cd estools/node_modules/.bin/
导出data:./elasticdump \ --input=http://localhost:9200/blog \ --output=blog.json \ --type=data
然后我们接着来:#删除索引 DELETE blog#创建 PUT blog { "mappings": { "news": { "properties": { "title": { "type": "text", "analyzer": "ik_max_word" } } } } }
接下来,我们把blog.json导入索引里面:./elasticdump \ --input=blog.json \ --output=http://localhost:9200/blog \ --type=data
最后我们再来测试一下分词的情况:POST blog/_analyze { "field": "title", "text": "java开发技术实战" }
ok,我们发现中文分词成功
相关文章推荐
- Elasticsearch的数据导出和导入操作(elasticdump工具),以及删除指定type的数据(delete-by-query插件)
- 记elasticdump 备份数据导出导入
- elasticsearch-dump数据导入导出
- mysql导入导出数据中文乱码解决方法小结(1、navicat导入问题已解决,创建连接后修改连接属性,选择高级->将使用Mysql字符集复选框去掉,下拉框选择GBK->导入sql文件OK;2、phpmyadmin显示乱码的问题也解决,两步:1.将sql文件以utf8的字符集编码另存,2.将文件中sql语句中的字段字符集编码改成utf8,导入OK)
- Redis-Dump:将Redis数据导入导出
- java中调用ElasticSearch中文分词ik没有起作用
- Elasticsearch 中文分词器 IK 配置和使用
- elasticsearch 配置 JDBC数据源与IK中文分词插件
- Oracle数据泵(Dump)导出、导入
- Elasticsearch之中文分词器插件es-ik的自定义词库
- Linux-CentOS Elasticsearch 安装ik中文分词
- 【转】DB2 BLOB大字段数据通过命令行进行导入导出
- elasticsearch 安装ik中文分词
- mysql导入导出数据中文乱码解决方法小结
- ElasticSearch 查看某个字段数据的分词结果
- [大数据]-Elasticsearch5.3.1 IK分词,同义词/联想搜索设置
- 数据库导入/导出csv格式的数据文件+添加新的字段
- 【elasticsearch】(3)centos7 安装中文分词插件elasticsearch-analyzer-ik
- java中调用ElasticSearch中文分词ik没有起作用
- elasticsearch ik中文分词器的安装配置使用