Elasticsearch中文分词插件IK Analyer安装操作指导

1、安装mvn
wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
yum -y install apache-maven


2、下载版本,注意ik版本要和elasticsearch版本配套
现场es版本2.1.0,配套ik版本为1.6.0
下载ik版本(源码)
wget https://github.com/medcl/elasticsearch-analysis-ik/archive/v1.6.0.zip


3、使用mvn编译安装
mvn clean
mvn compile
mvn package


4、编译完成后,把target/releases/elasticsearch-analysis-ik-1.6.0.zip文件解压
unzip target/releases/elasticsearch-analysis-ik-1.6.0.zip


把5个jar(commons-codec-1.9.jar,commons-logging-1.2.jar,elasticsearch-analysis-ik-1.6.0.jar,httpclient-4.4.1.jar,httpcore-4.4.1.jar)包复制es的lib/目录下
cp target/releases/*.jar $ES_HOME/lib/


把plugin-descriptor.properties到es的plugins/ik目录下
cp target/releases/plugin-descriptor.properties $ES_HOME/plugins/ik


5、将解压目录文件中config/ik文件夹(字典库)复制到ES安装目录config文件夹下。
cp config/ik $ES_HOME/config/


6、配置IK,在elasticsearch配置文件中添加ik分词类别
vi $ES_HOME/config/elasticsearch.yml
在文件最后添加如下:
index.analysis.analyzer.ik.type : "ik"


7、重启elasticSearch


8、验证分词安装


在浏览器中输入: http://192.168.1.100:9200/_analyze?analyzer=ik&pretty=true&text=我是中国人


查看分词效果
{
  "tokens" : [ {
    "token" : "我",
    "start_offset" : 0,
    "end_offset" : 1,
    "type" : "CN_CHAR",
    "position" : 0
  }, {
    "token" : "中国人",
    "start_offset" : 2,
    "end_offset" : 5,
    "type" : "CN_WORD",
    "position" : 1
  }, {
    "token" : "中国",
    "start_offset" : 2,
    "end_offset" : 4,
    "type" : "CN_WORD",
    "position" : 2
  }, {
    "token" : "国人",
    "start_offset" : 3,
    "end_offset" : 5,
    "type" : "CN_WORD",
    "position" : 3
  } ]
}


在浏览器中输入: http://192.168.1.100:9200/_analyze?analyzer=ik&pretty=true&text=sojson在线工具
{
  "tokens" : [ {
    "token" : "sojson",
    "start_offset" : 0,
    "end_offset" : 6,
    "type" : "ENGLISH",
    "position" : 0
  }, {
    "token" : "在线",
    "start_offset" : 6,
    "end_offset" : 8,
    "type" : "CN_WORD",
    "position" : 1
  }, {
    "token" : "工具",
    "start_offset" : 8,
    "end_offset" : 10,
    "type" : "CN_WORD",
    "position" : 2
  } ]
}


获取以上结果,表示IK安装成功。


下面为索引创建全文检索。
创建索引
curl -XPUT http://192.168.1.100:9200/index


配置映射
curl -XPOST http://192.168.1.100:9200/index/fulltext/_mapping -d'
{
    "fulltext": {
             "_all": {
            "analyzer": "ik_max_word",
            "search_analyzer": "ik_max_word",
            "term_vector": "no",
            "store": "false"
        },
        "properties": {
            "content": {
                "type": "string",
                "store": "no",
                "term_vector": "with_positions_offsets",
                "analyzer": "ik_max_word",
                "search_analyzer": "ik_max_word",
                "include_in_all": "true",
                "boost": 8
            }
        }
    }
}'


添加索引文档


curl -XPOST http://192.168.1.100:9200/index/fulltext/1 -d'
{"content":"美国留给伊拉克的是个烂摊子吗"}
'
curl -XPOST http://192.168.1.100:9200/index/fulltext/2 -d'
{"content":"公安部:各地校车将享最高路权"}
'
curl -XPOST http://192.168.1.100:9200/index/fulltext/3 -d'
{"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}
'
curl -XPOST http://192.168.1.100:9200/index/fulltext/4 -d'
{"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}
'
curl -XPOST http://192.168.1.100:9200/index/fulltext/5 -d'
{"content":"陈云飞是一个好同学"}
'
curl -XPOST http://192.168.1.100:9200/index/fulltext/6 -d'
{"content":"白云飞是一个好同学"}
'


curl -XPOST http://192.168.1.100:9200/index/fulltext/7 -d'
{"content":"董元福是一个好同学"}
'


高亮查询
curl -XPOST http://192.168.1.100:9200/index/fulltext/_search  -d'
{
    "query" : { "term" : { "content" : "中国" }},
    "highlight" : {
        "pre_tags" : ["", ""],
        "post_tags" : ["
", ""],
        "fields" : {
            "content" : {}
        }
    }
}
'


词库更新
在192.168.1.101上面已经建立了远程词库位置在/var/www/html下面 名字是sougou.dic
如果搜索的时候没匹配到词,可以往sougou.dic尾部添加词,添加后elasticsearch会动态加载词库。
添加方法:在 192.168.1.101机器上,使用root用户执行以下命令:
#echo "动态加载" /var/www/html/sougou.dic


更新词库后,再往elasticsearch对应的index里添加数据,会使用新词库进行分词。




常见问题
问题1:"analyzer [ik_max_word] not found for field [content]"


解决办法:在所有es节点安装IK后,问题解决。




问题2:"failed to find analyzer [ik]"
解决办法:在es配置文件elasticsearch.yml的最后添加如下后问题解决:
index.analysis.analyzer.ik.type : "ik" 




你可能感兴趣的:(大数据)