Elasticsearch中文搜索环境搭建
Elasticsearch是一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎,功能强大,最近刚好要研究搜索这一块,简要记录备日后查阅
-
安装Java JDK,由于Lucene是用Java开发的,所以需要安装JVM
-
从JAVA官网下载JDK安装包,注意,由于后面我们安装中文分词插件需要装maven,所以安装的必须是JDK包而不是JRE
-
通过RPM -ivh 命令安装下好的安装包
-
编辑配置文件,将安装好的java路径加入环境变量
#vim /etc/profile
在里面添加如下内容
export JAVA_HOME=/usr/java/your_jdk_directory(修改成对应的路径) export JAVA_BIN=$JAVA_HOME/bin export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME JAVA_BIN PATH CLASSPATH
使配置文件生效
#source /etc/profile 或 #. /etc/profile (也可关闭终端重新登陆)
如果出现以下类似的输出,证明安装成功
#java -version java version "1.8.0_66" Java(TM) SE Runtime Environment (build 1.8.0_66-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)
-
-
安装elasticsearch
-
从elasticsearch官网下载elasticsearch安装包
-
将安装包放于要安装的目录,解压
$unzip elasticsearch-2.3.2.zip
-
启动看是否成功,注意不能用root用户
$bin/elasticsearch
-
-
安装Marvel管理插件(选装)
-
先从Kibana下载界面下载Kibana
-
解压kibana,并修改配置文件,将elasticsearch路径指向上一步elasticsearch的访问路径,默认为 http://localhost:9200
-
安装Marvel
$bin/plugin install license $bin/plugin install marvel-agent $bin/kibana —install elasticsearch/marvel/latest $bin/elasticsearch $bin/kibana
-
-
安装中文分词插件elasticsearch-analysis-ik
-
若未安装maven,需要先安装maven,可通过yum install maven, brew install maven等安装,也可下载源码解压后将bin目录加入PATH环境变量安装
-
从github上下载elasticsearch-analysis-ik源码, 再通过maven打包,并将打好的包拷贝到plugins/ik目录下,解压
$mvn package $cp target/releases/elasticsearch-analysis-ik-{version}.zip to your-es-root/plugins/ik $unzip target/releases/elasticsearch-analysis-ik-{version}.zip $bin/elasticsearch
-
简单验证分词插件是否安装成功
新建索引
$curl -XPUT http://localhost:9200/index
配置分词mapping
$curl -XPOST http://localhost: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://localhost:9200/index/fulltext/1 -d'{"content":"美国留给伊拉克的是个烂摊子吗"}' $curl -XPOST http://localhost:9200/index/fulltext/2 -d'{"content":"公安部:各地校车将享最高路权"}'
搜索
$curl -XPOST http://localhost:9200/index/fulltext/_search -d' { "query" : { "term" : { "content" : "美国" }}, "highlight" : { "pre_tags" : ["<tag1>", "<tag2>"], "post_tags" : ["</tag1>", "</tag2>"], "fields" : { "content" : {} } } }'
如果有搜索结果,证明中文分词插件已经安装成功
-
-
安装相应的客户端api,如golang客户端api
go get gopkg.in/olivere/elastic.v3