elasticsearch2.4.6+mongo-connector+ik1.10.6部署

1.安装elasticsearch (安装之前需要安装Java1.8版本以上。)

配置Java

检测是否有java环境,rpm -qa | grep jdk或者java

如果有 先卸载掉之前的java环境: rpm -e nodeps 进程名称 没有请看第三步

安装jdk ,导入安装包,一般在 /usr/local/ 下创建一个 java目录作为安装目录

解压文件到java目录下

配置环境变量: vi /etc/profile ,在文件最后添加以下信息:根据自己的安装包修改以及安装路径

#set java environment

JAVA_HOME=/usr/local/java/jdk1.8.0_131

CLASSPATH=.:$JAVA_HOME/lib.tools.jar

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOME CLASSPATH PATH

保存profile 文件,并退出

执行source /etc/profile 使更改的配置立即生效

1.8. 验证是否安装成功,java -version

配置elasticsearch yum源

# vim /etc/yum.repos.d/elasticsearch.repo

输入:

[elasticsearch-2.x]

name=Elasticsearch repository for 2.x packages

baseurl=http://packages.elastic.co/elasticsearch/2.x/centos

gpgcheck=1

gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch

enabled=1

# yum makecache

# yum install elasticsearch

启动命令:service elasticsearch start

若用 bin/elasticsearch启动,则需要将root用户改成elsearch ;用户组 : su elsearch

curl -XGET 'localhost:9200/?pretty',

出现

{

"name" : "Amalgam",

"cluster_name" : "elasticsearch",

"cluster_uuid" : "q1JTidLuTNecwBbFNJCUFQ",

"version" : {

"number" : "2.4.1",

"build_hash" : "c67dc32e24162035d18d6fe1e952c4cbcbe79d16",

"build_timestamp" : "2016-09-27T18:57:55Z",

"build_snapshot" : false,

"lucene_version" : "5.5.2"

},

"tagline" : "You Know, for Search"

}

即配置成功;

需配置外网访问更改es配置

# vim /etc/elasticsearch/elasticsearch.yml

在阿里云开放端口9200/9400(外网)

2. 配置ik,head等插件;

2.1 head:

直接通过es plugins安装

./bin/plugin install mobz/elasticsearch-head

2.2 ik:

中文分词: es版本2.4.6 对应 ik插件版本: 1.10.6 ;

Github 参考link:medcl/elasticsearch-analysis-ik

支持更新热词等功能; 安装的坑: 解压前需要使用maven对下载的es-ik源码进行编

参数设置:ik_max_word 和 ik_smart 什么区别?

ik_max_word: 会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中 华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会 穷尽各种可能的组合,适合 Term Query;

ik_smart: 会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”,适合Phrase 查询。 (个人认为适用于Titile)

3. 通过mongo-connector将数据导入es

参考文档:https://blog.csdn.net/werfhksdhf/article/details/83647882

①对应es2.4, 下载对应版本的mongo-connector以及pip install elastic2-doc-manager库。若服务器中有多个python;先升级到python2.7以上后,将各个版本中的mongo-connector删除后再重新安装。否则将出现bash : no command mongo-connector类似的命令;注意环境变量配置。

②需要开启mongodb复制集

若正常启动 mongo-connector

mongo-connector -m 47.94.14.59:27017 -t 47.94.14.59:9200 -d elastic2_doc_manager -n aituwen.posts

-m 以及 -t 后面分别是mongo端口和es端口; 导入数据100万条,需要40分钟左右;

4. ik分词器的使用及热词库使用

首先修改aituwen的分词器,问题:从mongo-connector导入的数据自动指定了索引mapping结构;

参考

ES 09 - Elasticsearch如何定制分词器 (自定义分词策略)​www.cnblogs.com

先将索引close;

POST address/_close

执行:

PUT aituwen/_settings

{

"analysis": {

"analyzer": "ik_max_word",

"search_analyzer": "ik_smart"

}

}

成功后将索引open

POST address/_open

分词效果查看:

GET aituwen/_analyze

{

"analyzer": "ik_max_word",

"text": "我爱北京天安门"

}

GET aituwen/_analyze

{

"analyzer": "standard",

"text": "我爱北京天安门"

}

ik 配置: 官方文档 https://github.com/medcl/elasticsearch-analysis-ik

IKAnalyzer.cfg.xml位于 {plugins}/elasticsearch-analysis-ik-*/config/IKAnalyzer.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">

<properties>

<comment>IK Analyzer 扩展配置</comment>

<!--用户可以在这里配置自己的扩展字典 -->

<entry key="ext_dict">custom/mydict.dic;custom/single_word_low_freq.dic</entry>

<!--用户可以在这里配置自己的扩展停止词字典-->

<entry key="ext_stopwords">custom/ext_stopword.dic</entry>

<!--用户可以在这里配置远程扩展字典 -->

<entry key="remote_ext_dict">location</entry>

<!--用户可以在这里配置远程扩展停止词字典-->

<entry key="remote_ext_stopwords">http://xxx.com/xxx.dic</entry>

</properties>

热更新 IK 分词使用方法

目前该插件支持热更新 IK 分词,通过上文在 IK 配置文件中提到的如下配置

<!--用户可以在这里配置远程扩展字典 -->

<entry key="remote_ext_dict">location</entry>

<!--用户可以在这里配置远程扩展停止词字典-->

<entry key="remote_ext_stopwords">location</entry>

其中 location 是指一个 url,比如 http://yoursite.com/getCustomDict,该请求只需满足以下两点即可完成分词热更新。

该 http 请求需要返回两个头部(header),一个是 Last-Modified,一个是 ETag,这两者都是字符串类型,只要有一个发生变化,该插件就会去抓取新的分词进而更新词库。

该 http 请求返回的内容格式是一行一个分词,换行符用 \n 即可。

满足上面两点要求就可以实现更新热分词了,不需要重启 ES 实例。

可以将需自动更新的热词放在一个 UTF-8 编码的 .txt 文件里,放在 nginx 或其他简易 http server 下,当 .txt 文件修改时,http server 会在客户端请求该文件时自动返回相应的 Last-Modified 和 ETag。可以另外做一个工具来从业务系统提取相关词汇,并更新这个 .txt 文件。

操作示例与效果展示:

在kibana/sense中查看分词效果:

可以看到 ①陈港生三个词被分开,②ik分词起作用,原名两字成功分词。

进入plugins/ik/config/custom,在mydict.dic中添加 陈港生

service elasticsearch restart

可以看到陈港生三个字作为一个独立分词。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容