搜索框架搭建1:elasticsearch安装和可视化工具kibana、分词插件jieba安装

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/

1 Windosw环境

1.1 java环境安装

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)

1.2 elasticsearch安装

  • 第一步:下载某个版本的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"
}

1.3 可视化界面kibana安装

下载某个版本的kibana,解压到某个路径即可。

测试kibana是否生效需以下几步:
(1) 启动es
(2) 启动kibana,在命令行窗口进入kibana路径,输入语句bin\kibana.bat即后台启动完成
(3) 在浏览器中输入http://localhost:5601,可成功访问即可,页面类似如下
kibana可视化界面

1.4 中文分词jieba插件安装

elasticsearch自带分词插件,但中文分词效果很差。一些中文分词插件被开发出来提升es的分词效果,如ik,jieba,ik作为外国友人开发的插件,效果不如jieba。

1.4.1 gradle安装

在编译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

1.4.2 jieba插件安装

下载和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) 全模式,把句子中所有的可以成词的词语都扫描出来,速度非常快,但不能解决歧义问题。

2 Linux环境

Linux环境下安装elasticsearch和相关的工具、插件,和windows下大同小异。

2.1 java安装

  • 第一步:下载对应的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安装成功。

2.2 elasticsearch安装

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

2.3 可视化界面kibana安装

下载某个版本的kibana,解压到某个路径即可。

测试kibana是否生效需以下几步:
(1) 启动es
(2) 启动kibana,在命令行窗口进入kibana路径,输入语句./bin/kibana即后台启动完成
(3) 在浏览器中输入http://localhost:5601,可成功访问即可,若是服务器,则把localhost换成服务器ip地址。

2.4 中文分词jieba插件安装

类似windows环境下Jieba插件的安装。

2.4.1 gradle安装

  • 第一步:下载某版本的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

2.4.2 jieba插件安装

和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进行开发了。

猜你喜欢

转载自blog.csdn.net/tingkr/article/details/84029738