赞
踩
Elasticsearch前身为Lucene,是一个分布式可扩展的实时搜索和分析引擎。
为了更好地使用Elasticsearch,会安装相应的工具或插件,如可视化工具kibana,分词插件jieba。windows环境和Linux环境下安装elasticsearch和插件、工具略有差异。
相关资源下载链接
elasticsearch下载: https://www.elastic.co/downloads/past-releases/
kibana可视化工具下载: https://www.elastic.co/cn/downloads/kibana, 历史版本:https://www.elastic.co/downloads/past-releases
jieba分词插件下载: https://github.com/sing1ee/elasticsearch-jieba-plugin/releases
java下载: https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
gradle工具下载: http://services.gradle.org/distributions/
Elasticsearch 需要 Java 8 环境。如果机器没有java8环境,则首先需要安装java8。
第一步:下载对应的java版本,一路next,记住java8安装的路径,一般是C:\Program Files\Java\jre1.8.0_181
。
第二步:添加JAVA路径。在环境变量中,添加变量JAVA_HOME
,值设为java的安装路径C:\Program Files\Java\jre1.8.0_181
。windows修改环境变量,需要重启电脑生效。
在命令行窗口输入java -version
,若显示如下结果,则表示安装成功。或显示java路径,echo %JAVA_HOME%
,与在环境变量中添加的JAVA_HOME值相同,则也表示安装成功
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
第一步:下载某个版本的elasticsearch,解压到某个路径。
第二步:修改./config/elasticsearch.yml配置文件
(1) 修改network.host: 0.0.0.0,0.0.0.0表示所有网址都能访问
(2) 修改http.port: 9200,设置访问端口,如果9200端口被占用了,则用另外的端口。
(3) 可设置当前es的cluster.name和node.name的值。
注意:在修改配置文件时,所有生效项紧跟的冒号后面,需要有一个英文字符的空格;所有生效项所在行的第一个字符为空格,否则es启动时读取配置文件将无法正确解析。
第三步:测试es是否生效
(1) 从命令行窗口进入es所在目录,输入bin\elasticsearch.bat
,则启动了es
(2) 在浏览器网页中输入http://localhost:9200
,当返回一个JSON对象,包含当前节点、集群版本等信息,则表示elasticsearch配置成功,如下图所示
{ "name" : "node-1", "cluster_name" : "es-GuoTing-application", "cluster_uuid" : "j6um5uZlSmygvi-pq897dA", "version" : { "number" : "6.4.0", "build_flavor" : "default", "build_type" : "zip", "build_hash" : "595516e", "build_date" : "2018-08-17T23:18:47.308994Z", "build_snapshot" : false, "lucene_version" : "7.4.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }
下载某个版本的kibana,解压到某个路径即可。
测试kibana是否生效需以下几步:
(1) 启动es
(2) 启动kibana,在命令行窗口进入kibana路径,输入语句bin\kibana.bat
即后台启动完成
(3) 在浏览器中输入http://localhost:5601
,可成功访问即可,页面类似如下
elasticsearch自带分词插件,但中文分词效果很差。一些中文分词插件被开发出来提升es的分词效果,如ik,jieba,ik作为外国友人开发的插件,效果不如jieba。
在编译jieba得到可用的jieba分词插件时,需用到gradle这个工具。如果机器上没有gradle这个工具,则需先安装此工具。
第一步:下载某版本的gradle工具后,解压到某路径。
第二步:添加gradle路径。在环境变量中,添加变量GRADLE_HOME
,值设为gradle的路径。例如D:\gradle-4.10.2
,并在Path中添加gradle的bin的路径,例如D:\gradle-4.10.2\bin
。windows修改环境变量,需要重启电脑生效。
在命令行窗口输入gradle -version
,若显示如下结果,则表示安装成功。
D:\>gradle -version
------------------------------------------------------------
Gradle 4.10.2
------------------------------------------------------------
Build time: 2018-09-19 18:10:15 UTC
Revision: b4d8d5d170bb4ba516e88d7fe5647e2323d791dd
Kotlin DSL: 1.0-rc-6
Kotlin: 1.2.61
Groovy: 2.4.15
Ant: Apache Ant(TM) version 1.9.11 compiled on March 23 2018
JVM: 1.8.0_181 (Oracle Corporation 25.181-b13)
OS: Windows 10 10.0 amd64
下载和es版本相对应版本的jieba分词插件,解压到某路径后,用gradle编译后才可得到可用的插件。步骤如下
第一步:从命令行窗口进入jieba分词插件解压路径,运行gradle pz
。编译成功,将会在./build/distributions/
目录下生成一个压缩包。
第二步:将压缩包解压,拷贝到${elasticsearch_home}/plugins
路径下,可删除压缩包文件。
验证jieba分词是否安装成功,可从浏览器或可视化界面两种方法。不管哪种方法,首先需重启es。
(1) 浏览器验证
在浏览器中输入http://localhost:9200/_analyze?analyzer=jieba_index&pretty=true&text=输入要分词的句子,浏览器返回分词后的结果,则说明jieba分词安装成功。
也可能返回如下的json文件,这时候不一定说明jieba分词插件没有成功安装,有可能是es的http的接口问题,可用可视化界面的方法确认是否未成功。
出现这种问题的解决方法目前还没找到。
{
"error" : {
"root_cause" : [
{
"type" : "parse_exception",
"reason" : "request body or source parameter is required"
}
],
"type" : "parse_exception",
"reason" : "request body or source parameter is required"
},
"status" : 400
}
(2) 可视化界面验证
启动kibana,在DevTools界面下输入
POST /_analyze/?pretty
{
"analyzer": "jieba_search",
"text": "我爱北京天安门"
}
出现如下界面表示是通过jieba插件进行分词的。
{ "tokens": [ { "token": "我爱", "start_offset": 0, "end_offset": 2, "type": "word", "position": 0 }, { "token": "北京", "start_offset": 2, "end_offset": 4, "type": "word", "position": 1 }, { "token": "天安门", "start_offset": 4, "end_offset": 7, "type": "word", "position": 2 } ] }
es中,analyzer表示分词使用的方法,当使用结巴分词时,可以是jieba_index: 用于索引分词,分词力度较细;jieba_search:用于查询分词,分词力度较粗;jieba_others: 全角转半角、大写转小写、字符分词。
jieba有三种分词模式,
(1) 精确模式,试图将句子最精确地切开,适合文本分析;
(2) 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词;
(3) 全模式,把句子中所有的可以成词的词语都扫描出来,速度非常快,但不能解决歧义问题。
Linux环境下安装elasticsearch和相关的工具、插件,和windows下大同小异。
第一步:下载对应的java版本,解压到某路径。
第二步:添加JAVA路径。通过修改/etc/profile文件,在文件末尾添以下语句,并通过语句source /etc/profile
使修改生效。
JAVA_HOME=/home/appuser/envs/jdk1.8.0_171 #java的路径
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH export CLASSPATH
在命令行中输入java -version
,若返回正确的java版本信息,则java安装成功。
Linux下elasticsearch的安装和windows下基本一致。
先下载解压
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.0.zip
unzip elasticsearch-6.2.0.zip
再修改./config/elasticsearch.yml配置文件,最后测试是否安装成功时与windows略有差异。启动es时,先进入到es路径,再通过./bin/elasticsearch
启动。在浏览器网页中输入http://localhost:9200
,当返回一个正确的JSON对象,包含当前节点、集群版本等信息,则安装成功。若是服务器,则浏览器输入内容中localhost换成服务器ip地址,例如http://10.90.234.118:9200
。
下载某个版本的kibana,解压到某个路径即可。
测试kibana是否生效需以下几步:
(1) 启动es
(2) 启动kibana,在命令行窗口进入kibana路径,输入语句./bin/kibana
即后台启动完成
(3) 在浏览器中输入http://localhost:5601
,可成功访问即可,若是服务器,则把localhost换成服务器ip地址。
类似windows环境下Jieba插件的安装。
第一步:下载某版本的gradle工具后,解压到某路径。
第二步:添加gradle路径。通过修改/etc/profile文件,在文件末尾添以下语句,并通过语句source /etc/profile
使修改生效。
export GRADLE_HOME=/usr/local/gradle-5.0 #gradle 路径
export PATH=$GRADLE_HOME/bin:$PATH
export GRADLE_USER_HOME=$GRADLE_HOME/.gradle #gradle的配置文件位置,该目录下的init.gradle指定了远程库路径
在命令行窗口输入gradle -version
,若显示正确的gradle版本信息,则表示安装成功。
在使用gradle pz
编译jieba插件时,从国外镜像下载相关资源一般会失败,需要添加国内的阿里云镜像。
对单个项目生效,则修改该项目路径下的build.gradle的内容,修改对应buildscript和allprojects项的内容如下
buildscript { repositories { maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } maven{ url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'} } dependencies {#建议注释该项内容,在使用gradle pz时易报错 classpath 'com.android.tools.build:gradle:2.2.3' } } allprojects { repositories { maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'} } }
修改完后,在使用语句gradle pz
在Linux环境下编译jieba插件时一般不会报错。接下来就可以进入到编译jieba插件阶段。
而本人在服务器上编译时遇到如下问题,怀疑是和网络连接限制的相关问题。网上很少资料涉及到这个问题,做了基本能做的尝试,都没法解决此问题,如果有人遇到类似问题也解决了,请不要吝啬来告诉我方法吧。
FAILUER: Build failed with an exception. * What went wrong: Execution failed for task ':compileJava'. > Could not resolve all files for configuration ':compileClasspath'. > Could not resolve com.huaban:jieba-analysis:1.0.2. Required by: project : > Could not resolve com.huaban:jieba-analysis:1.0.2. > Could not get resource 'http://maven.aliyun.com/nexus/content/groups/public/com/huaban/jieba-analysis/1.0.2/jieba-analysis-1.0.2.pom'. > Could not GET 'http://maven.aliyun.com/nexus/content/groups/public/com/huaban/jieba-analysis/1.0.2/jieba-analysis-1.0.2.pom'. > maven.aliyun.com > Could not resolve com.huaban:jieba-analysis:1.0.2. > Could not get resource 'https://jcenter.bintray.com/com/huaban/jieba-analysis/1.0.2/jieba-analysis-1.0.2.pom'. > Could not GET 'https://jcenter.bintray.com/com/huaban/jieba-analysis/1.0.2/jieba-analysis-1.0.2.pom'. > jcenter.bintray.com > Could not resolve org.elasticsearch:elasticsearch:6.4.0. Required by: project : > Could not resolve org.elasticsearch:elasticsearch:6.4.0. > Could not get resource 'http://maven.aliyun.com/nexus/content/groups/public/org/elasticsearch/elasticsearch/6.4.0/elasticsearch-6.4.0.pom'. > Could not GET 'http://maven.aliyun.com/nexus/content/groups/public/org/elasticsearch/elasticsearch/6.4.0/elasticsearch-6.4.0.pom'. > maven.aliyun.com > Could not resolve org.elasticsearch:elasticsearch:6.4.0. > Could not get resource 'https://jcenter.bintray.com/org/elasticsearch/elasticsearch/6.4.0/elasticsearch-6.4.0.pom'. > Could not GET 'https://jcenter.bintray.com/org/elasticsearch/elasticsearch/6.4.0/elasticsearch-6.4.0.pom'. > jcenter.bintray.com > Could not resolve org.apache.logging.log4j:log4j-api:2.7. Required by: project : > Could not resolve org.apache.logging.log4j:log4j-api:2.7. > Could not get resource 'http://maven.aliyun.com/nexus/content/groups/public/org/apache/logging/log4j/log4j-api/2.7/log4j-api-2.7.pom'. > Could not GET 'http://maven.aliyun.com/nexus/content/groups/public/org/apache/logging/log4j/log4j-api/2.7/log4j-api-2.7.pom'. > maven.aliyun.com > Could not resolve org.apache.logging.log4j:log4j-api:2.7. > Could not get resource 'https://jcenter.bintray.com/org/apache/logging/log4j/log4j-api/2.7/log4j-api-2.7.pom'. > Could not GET 'https://jcenter.bintray.com/org/apache/logging/log4j/log4j-api/2.7/log4j-api-2.7.pom'. > jcenter.bintray.com > Could not resolve org.apache.logging.log4j:log4j-core:2.7. Required by: project : > Could not resolve org.apache.logging.log4j:log4j-core:2.7. > Could not get resource 'http://maven.aliyun.com/nexus/content/groups/public/org/apache/logging/log4j/log4j-core/2.7/log4j-core-2.7.pom'. > Could not GET 'http://maven.aliyun.com/nexus/content/groups/public/org/apache/logging/log4j/log4j-core/2.7/log4j-core-2.7.pom'. > maven.aliyun.com > Could not resolve org.apache.logging.log4j:log4j-core:2.7. > Could not get resource 'https://jcenter.bintray.com/org/apache/logging/log4j/log4j-core/2.7/log4j-core-2.7.pom'. > Could not GET 'https://jcenter.bintray.com/org/apache/logging/log4j/log4j-core/2.7/log4j-core-2.7.pom'. > jcenter.bintray.com
和windows环境下几乎相同。
下载和es版本相同版本的jieba分词插件,解压,运行gradle pz
。
在运行gradle pz
时可能会提示没有操作权限,则需查看当前文件夹是否可执行,可用chmod -R 777 .
修改当前用户对整个文件夹的操作权限。
编译成功,在./build/distributions/
目录下生成一个压缩包,拷贝到${elasticsearch_home}/plugins
路径下并解压,可删除压缩包文件。
验证jieba分词是否安装成功同windows环境。略微差异在于,如果是服务器,在局域网的其它机器的浏览器输入内容时,localhost替换成浏览器的ip地址,如http://10.90.234.118:9200/_analyze?analyzer=jieba_index&pretty=true&text=输入要分词的句子。
经过以上步骤,基本上ES和相关的插件、工具都安装完成,可以使用ES进行开发了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。