03-Linux上安裝Elasticsearch5.x

這里使用elasticsearch做全文檢索憎瘸,不是ELK日志采集赶站。

elasticsearch作為全文檢索算行,必須服務(wù)端和客服端的版本一致呈驶,所以在安裝elasticsearch時(shí)努释,要注意版本問(wèn)題碘梢。

前言

  1. 這里我的系統(tǒng)是阿里云的 CentOS 7.2 64位,2核8G
  2. $開(kāi)始的命令表示你要輸入的命令

一伐蒂、JAVA環(huán)境配置

ElasticSearch是基于lucence開(kāi)發(fā)的煞躬,也就是運(yùn)行需要java支持。所以要先安裝JAVA環(huán)境。 由于ElasticSearch 5.x 依賴(lài)于JDK 1.8的恩沛,所以現(xiàn)在我們下載JDK 1.8或者更高版本在扰。以下命令將會(huì)下載最新的jdk

$ yum install java

安裝完畢后測(cè)試

$ java -version

二、Elasticsearch引擎安裝

1雷客、創(chuàng)建帳號(hào)和分配權(quán)限

官方文檔上說(shuō)Elasticsearch不適合在root管理員帳號(hào)下運(yùn)行芒珠,所以要先建立一個(gè)賬號(hào)專(zhuān)門(mén)運(yùn)行Elasticsearch.

創(chuàng)建es組和賬戶,創(chuàng)建組命令groupadd 用戶組搅裙,創(chuàng)建用戶useradd -g 用戶組 用戶名

$ groupadd es
$ useradd -g es es

設(shè)置密碼

$ passwd es

FX_zscs_0303

按照提示輸入密碼和確認(rèn)密碼就成功創(chuàng)建elsearch賬戶了妓局。

2、修改系統(tǒng)參數(shù)

使用命令vim /etc/security/limits.conf在最后添加數(shù)據(jù)如下:(soft nproc和hard nproc也可以設(shè)置成65536)

root soft nofile 65535
root hard nofile 65535

#es
es soft nofile 65536
es hard nofile 65536

* soft nofile 65535
* hard nofile 65535

image

使用命令vim /etc/sysctl.conf在最后添加一行數(shù)據(jù)如下:vm.max_map_count=262144

修改完后呈宇,執(zhí)行如下命令

sysctl -p

3好爬、創(chuàng)建elasticsearch工作目錄

$ cd /data/
$ mkdir elasticsearch

4、下載elasticsearch

打開(kāi)官網(wǎng) https://www.elastic.co/cn/downloads
eg: https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.3.tar.gz

選擇下載elasticsearch甥啄,根據(jù)需要選擇對(duì)應(yīng)的安裝包奏候,這里選擇5.5.3版本放棒,下載完后得到 elasticsearch-5.5.3.tar.gz

5、安裝

將下載好的elasticsearch-5.5.3.tar.gz上傳到/data/elasticsearch目錄下

解壓elasticsearch-5.5.3.tar.gz 到當(dāng)前目錄

$ tar -zxvf elasticsearch-5.5.3.tar.gz -C /data/elasticsearch

查看

$ ls
elasticsearch-5.5.3  elasticsearch-5.5.3.tar.gz 

刪除壓縮文件,使用命令

$ rm -f elasticsearch-5.5.3.tar.gz

授權(quán)/data/elasticsearch文件給es用戶翅娶,命令說(shuō)明chown [選項(xiàng)]... [所有者][:[組]] 文件...

chown -R es:es /data/elasticsearch

6贝淤、配置

進(jìn)入/data/elasticsearch/elasticsearch-5.5.3目錄铜犬,使用命令

cd /data/elasticsearch/elasticsearch-5.5.3

目錄結(jié)構(gòu)

├── elasticsearch-5.5.3
│   ├── bin
│   │   ├── elasticsearch
│   │   ├── elasticsearch.bat
│   │   ├── elasticsearch.in.bat
│   │   ├── elasticsearch.in.sh
│   │   ├── elasticsearch-keystore
│   │   ├── elasticsearch-keystore.bat
│   │   ├── elasticsearch-plugin
│   │   ├── elasticsearch-plugin.bat
│   │   ├── elasticsearch-service.bat
│   │   ├── elasticsearch-service-mgr.exe
│   │   ├── elasticsearch-service-x64.exe
│   │   ├── elasticsearch-service-x86.exe
│   │   ├── elasticsearch-systemd-pre-exec
│   │   ├── elasticsearch-translog
│   │   └── elasticsearch-translog.bat
│   ├── config
│   │   ├── elasticsearch.yml
│   │   ├── jvm.options
│   │   └── log4j2.properties
│   ├── lib
│   ├── LICENSE.txt
│   ├── modules
│   ├── NOTICE.txt
│   ├── plugins
│   └── README.textile

進(jìn)入其中的config目錄(使用命令cd config)荔茬,編輯elasticsearch.yml文件

cd ./config
vim elasticsearch.yml

添加配置,注意有额,配置文件“:”后要有空格

#這是集群名字般又,我們 起名為 elasticsearch
#es啟動(dòng)后會(huì)將具有相同集群名字的節(jié)點(diǎn)放到一個(gè)集群下。
cluster.name:  es-zscs

#節(jié)點(diǎn)名字巍佑。
node.name: "es-node1"

# 數(shù)據(jù)存儲(chǔ)位置(單個(gè)目錄設(shè)置) 
path.data: /data/elasticsearch/elasticsearch-5.5.3/data

# 日志文件的路徑 
path.logs: /data/elasticsearch/elasticsearch-5.5.3/logs

#設(shè)置綁定的ip地址,可以是ipv4或ipv6的,默認(rèn)為0.0.0.0 
#network.bind_host: 192.168.250.104

#設(shè)置其它節(jié)點(diǎn)和該節(jié)點(diǎn)交互的ip地址,如果不設(shè)置它會(huì)自動(dòng)設(shè)置,值必須是個(gè)真實(shí)的ip地址
#network.publish_host: 192.168.250.104

#同時(shí)設(shè)置bind_host和publish_host上面兩個(gè)參數(shù)茴迁。
#network.host: 192.168.250.104

# 設(shè)置節(jié)點(diǎn)間交互的tcp端口,默認(rèn)是9300 
transport.tcp.port: 9300 

# 設(shè)置是否壓縮tcp傳輸時(shí)的數(shù)據(jù),默認(rèn)為false,不壓縮
transport.tcp.compress: true 

# 設(shè)置對(duì)外服務(wù)的http端口,默認(rèn)為9200 
http.port: 9200

# 使用http協(xié)議對(duì)外提供服務(wù),默認(rèn)為true,開(kāi)啟 
#http.enabled: false 

#discovery.zen.ping.unicast.hosts:["節(jié)點(diǎn)1的 ip","節(jié)點(diǎn)2 的ip","節(jié)點(diǎn)3的ip"]
#這是一個(gè)集群中的主節(jié)點(diǎn)的初始列表,當(dāng)節(jié)點(diǎn)(主節(jié)點(diǎn)或者數(shù)據(jù)節(jié)點(diǎn))啟動(dòng)時(shí)使用這個(gè)列表進(jìn)行探測(cè) 
#discovery.zen.ping.unicast.hosts: ["192.168.137.100",  "192.168.137.101","192.168.137.100:9301"]

#指定集群中的節(jié)點(diǎn)中有幾個(gè)有master資格的節(jié)點(diǎn)萤衰。
#對(duì)于大集群可以寫(xiě)(2-4)堕义。
discovery.zen.minimum_master_nodes: 1

配置說(shuō)明

屬性名 作用
cluster.name elk 設(shè)置當(dāng)前節(jié)點(diǎn)所屬的集群的名稱(chēng),為elasticsearch提供發(fā)現(xiàn)節(jié)點(diǎn)的作用
node.name elk-es-01 設(shè)置當(dāng)前節(jié)點(diǎn)的名稱(chēng)
path.data /data/elk/elasticsearch/data 設(shè)置當(dāng)前節(jié)點(diǎn)的數(shù)據(jù)目錄
npath.logs /data/elk/elasticsearch/logs 設(shè)置當(dāng)前節(jié)點(diǎn)的日志文件
network.host 0.0.0.0 設(shè)置允許訪問(wèn)的服務(wù)器ip脆栋,0.0.0.0代表所有的服務(wù)器
http.port 9200 對(duì)外提供的服務(wù)端口
discovery.zen.ping.unicast.hosts IP列表 用來(lái)發(fā)現(xiàn)新增的集群節(jié)點(diǎn)

7倦卖、引擎啟動(dòng)

切換到es用戶

su es

啟動(dòng)elasticsearch,(-d表示為后臺(tái)啟動(dòng))

/data/elasticsearch/elasticsearch-5.5.3/bin/elasticsearch -d

查看elasticsearch進(jìn)程情況

$ ps -ef |grep elasticsearch
root     30076 25943  0 20:28 pts/0    00:00:00 grep --color=auto elasticsearch

或者使用

$ /data/elasticsearch/elasticsearch-5.5.3/bin/elasticsearch

打印結(jié)果椿争,出現(xiàn)[es-node1] started表示啟動(dòng)成功

[2017-09-27T09:39:11,080][INFO ][o.e.n.Node               ] [es-node1] initializing ...
[2017-09-27T09:39:11,172][INFO ][o.e.e.NodeEnvironment    ] [es-node1] using [1] data paths, mounts [[/data (/dev/vdb1)]], net usable_space [90.2gb], net total_space [98.3gb], spins? [possibly], types [ext3]
[2017-09-27T09:39:11,173][INFO ][o.e.e.NodeEnvironment    ] [es-node1] heap size [1.9gb], compressed ordinary object pointers [true]
[2017-09-27T09:39:11,174][INFO ][o.e.n.Node               ] [es-node1] node name [es-node1], node ID [u5y2ra-qQL-q3IpdvfT4wA]
[2017-09-27T09:39:11,174][INFO ][o.e.n.Node               ] [es-node1] version[5.5.3], pid[9830], build[9305a5e/2017-09-07T15:56:59.599Z], OS[Linux/3.10.0-514.6.2.el7.x86_64/amd64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_112/25.112-b15]
[2017-09-27T09:39:11,174][INFO ][o.e.n.Node               ] [es-node1] JVM arguments [-Xms2g, -Xmx2g, -XX:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=75, -XX:+UseCMSInitiatingOccupancyOnly, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -Djdk.io.permissionsUseCanonicalPath=true, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Dlog4j.skipJansi=true, -XX:+HeapDumpOnOutOfMemoryError, -Des.path.home=/data/elasticsearch/elasticsearch-5.5.3]
[2017-09-27T09:39:12,109][INFO ][o.e.p.PluginsService     ] [es-node1] loaded module [aggs-matrix-stats]
[2017-09-27T09:39:12,109][INFO ][o.e.p.PluginsService     ] [es-node1] loaded module [ingest-common]
[2017-09-27T09:39:12,109][INFO ][o.e.p.PluginsService     ] [es-node1] loaded module [lang-expression]
[2017-09-27T09:39:12,109][INFO ][o.e.p.PluginsService     ] [es-node1] loaded module [lang-groovy]
[2017-09-27T09:39:12,109][INFO ][o.e.p.PluginsService     ] [es-node1] loaded module [lang-mustache]
[2017-09-27T09:39:12,109][INFO ][o.e.p.PluginsService     ] [es-node1] loaded module [lang-painless]
[2017-09-27T09:39:12,109][INFO ][o.e.p.PluginsService     ] [es-node1] loaded module [parent-join]
[2017-09-27T09:39:12,109][INFO ][o.e.p.PluginsService     ] [es-node1] loaded module [percolator]
[2017-09-27T09:39:12,109][INFO ][o.e.p.PluginsService     ] [es-node1] loaded module [reindex]
[2017-09-27T09:39:12,110][INFO ][o.e.p.PluginsService     ] [es-node1] loaded module [transport-netty3]
[2017-09-27T09:39:12,110][INFO ][o.e.p.PluginsService     ] [es-node1] loaded module [transport-netty4]
[2017-09-27T09:39:12,110][INFO ][o.e.p.PluginsService     ] [es-node1] loaded plugin [analysis-ik]
[2017-09-27T09:39:13,899][INFO ][o.e.d.DiscoveryModule    ] [es-node1] using discovery type [zen]
[2017-09-27T09:39:14,389][INFO ][o.e.n.Node               ] [es-node1] initialized
[2017-09-27T09:39:14,389][INFO ][o.e.n.Node               ] [es-node1] starting ...
[2017-09-27T09:39:14,520][INFO ][o.e.t.TransportService   ] [es-node1] publish_address {127.0.0.1:9300}, bound_addresses {127.0.0.1:9300}
[2017-09-27T09:39:17,579][INFO ][o.e.c.s.ClusterService   ] [es-node1] new_master {es-node1}{u5y2ra-qQL-q3IpdvfT4wA}{PALJMXYuQmeQ2ZDaGzAhfw}{127.0.0.1}{127.0.0.1:9300}, reason: zen-disco-elected-as-master ([0] nodes joined)
[2017-09-27T09:39:17,605][INFO ][o.e.h.n.Netty4HttpServerTransport] [es-node1] publish_address {127.0.0.1:9200}, bound_addresses {127.0.0.1:9200}
[2017-09-27T09:39:17,605][INFO ][o.e.n.Node               ] [es-node1] started
[2017-09-27T09:39:17,614][INFO ][o.e.g.GatewayService     ] [es-node1] recovered [0] indices into cluster_state

測(cè)試服務(wù)是否啟動(dòng)怕膛,如果啟動(dòng)成功則有如下提示

curl http://localhost:9200/?pretty

打出如下,說(shuō)明沒(méi)問(wèn)題

{
  "name" : "es-node1",
  "cluster_name" : "es-zscs",
  "cluster_uuid" : "DaViHV9TRaKL-AVobcjfAw",
  "version" : {
    "number" : "5.5.3",
    "build_hash" : "9305a5e",
    "build_date" : "2017-09-07T15:56:59.599Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.0"
  },
  "tagline" : "You Know, for Search"
}

8丘薛、錯(cuò)誤問(wèn)題

ERROR: [2] bootstrap checks failed
[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解決辦法

以管理員的賬號(hào)登錄linux嘉竟,修改系統(tǒng)參數(shù)

使用命令vim /etc/security/limits.conf在最后添加數(shù)據(jù)如下:(soft nproc和hard nproc也可以設(shè)置成65536)

root soft nofile 65535
root hard nofile 65535

#es
es soft nofile 65536
es hard nofile 65536

* soft nofile 65535
* hard nofile 65535

image

使用命令vim /etc/sysctl.conf在最后添加一行數(shù)據(jù)如下:vm.max_map_count=262144

修改完后,執(zhí)行如下命令

sysctl -p

參考

http://blog.csdn.net/u012371450/article/details/51776505

三洋侨、Elasticsearch中安裝中文分詞器(IK+pinyin)

在安裝分詞器的時(shí)候要注意版本問(wèn)題舍扰,分詞器的版本要和elasticsearch版本一致

1、安裝IK

IK希坚,elasticsearch-analysis-ik提供了兩種方式,ik_smart就是最少切分边苹,ik_max_word則為細(xì)粒度的切分(可能是雙向,沒(méi)看過(guò)源碼)

1.1 下載地址

ik分詞器下載地址

https://github.com/medcl/elasticsearch-analysis-ik

也可以下載對(duì)應(yīng)的releases版本進(jìn)行安裝

https://github.com/medcl/elasticsearch-analysis-ik/releases

1.2獲取ik分詞器插件包

ik分詞器插件可以直接下載對(duì)應(yīng)版本的源碼進(jìn)行maven打包裁僧,也可以直接下載打包好的文件進(jìn)行安裝个束,下面介紹兩種方式

1.2.1 maven打包安裝

下載對(duì)應(yīng)版本的ik源碼,這里下載elasticsearch-analysis-ik-5.5.3.zip聊疲,下載地址https://github.com/medcl/elasticsearch-analysis-ik/releases

[圖片上傳失敗...(image-fa0302-1560925855525)]

如果沒(méi)有對(duì)應(yīng)的版本茬底,只需要修改pom.xml就可以了

<properties>
        <!-- 這里的版本號(hào),修改成你對(duì)應(yīng)的版本就行了获洲。
        不過(guò)最好不要跨度太大阱表,相近的版本可能沒(méi)有問(wèn)題,但是跨度太大的版本贡珊,這樣做就不保證好使了-->
        <elasticsearch.version>5.5.3</elasticsearch.version>
        <maven.compiler.target>1.7</maven.compiler.target>
        <elasticsearch.assembly.descriptor>${project.basedir}/src/main/assemblies/plugin.xml</elasticsearch.assembly.descriptor>
        <elasticsearch.plugin.name>analysis-ik</elasticsearch.plugin.name>
        <elasticsearch.plugin.classname>org.elasticsearch.plugin.analysis.ik.AnalysisIkPlugin</elasticsearch.plugin.classname>
        <elasticsearch.plugin.jvm>true</elasticsearch.plugin.jvm>
        <tests.rest.load_packaged>false</tests.rest.load_packaged>
        <skip.unit.tests>true</skip.unit.tests>
        <gpg.keyname>4E899B30</gpg.keyname>
        <gpg.useagent>true</gpg.useagent> 
    </properties>

下載后最爬,執(zhí)行mvn package,進(jìn)行打包

├─config
├─src
└─target
    ├─archive-tmp
    ├─classes
    ├─generated-sources
    ├─maven-archiver
    ├─maven-status
    ├─releases
    │  └─elasticsearch-analysis-ik-5.5.3.zip
    └─surefire

編譯完成后门岔,可以在target/releases目錄下找到對(duì)應(yīng)的zip包爱致。

解壓elasticsearch-analysis-ik-5.5.3.zip包,復(fù)制到/data/elasticsearch/elasticsearch-5.5.3/plugins/analysis-ik下即可

1.2.2 直接下載ik分詞器插件包

下載地址https://github.com/medcl/elasticsearch-analysis-ik/releases

[圖片上傳失敗...(image-d34ef2-1560925855525)]

解壓elasticsearch-analysis-ik-5.5.3.zip包寒随,復(fù)制到/data/elasticsearch/elasticsearch-5.5.3/plugins/analysis-ik下即可

1.3 安裝ik分詞器插件

將下載好的elasticsearch-analysis-ik-5.5.3.zip上傳到/data/elasticsearch目錄下

解壓到/data/elasticsearch/elasticsearch-5.5.3/plugins/analysis-ik

unzip -d ./ik ./elasticsearch-analysis-ik-5.5.3.zip
mv ./ik/elasticsearch/ /data/elasticsearch/elasticsearch-5.5.3/plugins/analysis-ik
rm -rf ik

這樣ik分詞器就安裝好了糠悯,重啟elasticsearch就可以使用分詞器了

1.4 測(cè)試

ik 帶有兩個(gè)分詞器

  • ik_max_word :會(huì)將文本做最細(xì)粒度的拆分;盡可能多的拆分出詞語(yǔ)
  • ik_smart:會(huì)做最粗粒度的拆分妻往;已被分出的詞語(yǔ)將不會(huì)再次被其它詞語(yǔ)占有
4.1測(cè)試ik_max_word分詞器

這里使用curl進(jìn)行測(cè)試

curl -XGET 'http://localhost:9200/_analyze?pretty&analyzer=ik_max_word' -d '聯(lián)想是全球最大的筆記本廠商'

返回結(jié)果

{
  "tokens" : [
    {
      "token" : "聯(lián)想",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "CN_WORD",
      "position" : 0
    },
    {
      "token" : "是",
      "start_offset" : 2,
      "end_offset" : 3,
      "type" : "CN_CHAR",
      "position" : 1
    },
    {
      "token" : "全球",
      "start_offset" : 3,
      "end_offset" : 5,
      "type" : "CN_WORD",
      "position" : 2
    },
    {
      "token" : "最大",
      "start_offset" : 5,
      "end_offset" : 7,
      "type" : "CN_WORD",
      "position" : 3
    },
    {
      "token" : "的",
      "start_offset" : 7,
      "end_offset" : 8,
      "type" : "CN_CHAR",
      "position" : 4
    },
    {
      "token" : "筆記本",
      "start_offset" : 8,
      "end_offset" : 11,
      "type" : "CN_WORD",
      "position" : 5
    },
    {
      "token" : "筆記",
      "start_offset" : 8,
      "end_offset" : 10,
      "type" : "CN_WORD",
      "position" : 6
    },
    {
      "token" : "本廠",
      "start_offset" : 10,
      "end_offset" : 12,
      "type" : "CN_WORD",
      "position" : 7
    },
    {
      "token" : "廠商",
      "start_offset" : 11,
      "end_offset" : 13,
      "type" : "CN_WORD",
      "position" : 8
    }
  ]
}

1.4.2 測(cè)試ik_smart分詞器

這里使用curl進(jìn)行測(cè)試

curl -XGET 'http://localhost:9200/_analyze?pretty&analyzer=ik_smart' -d '聯(lián)想是全球最大的筆記本廠商'

返回結(jié)果

{
  "tokens" : [
    {
      "token" : "聯(lián)想",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "CN_WORD",
      "position" : 0
    },
    {
      "token" : "是",
      "start_offset" : 2,
      "end_offset" : 3,
      "type" : "CN_CHAR",
      "position" : 1
    },
    {
      "token" : "全球",
      "start_offset" : 3,
      "end_offset" : 5,
      "type" : "CN_WORD",
      "position" : 2
    },
    {
      "token" : "最大",
      "start_offset" : 5,
      "end_offset" : 7,
      "type" : "CN_WORD",
      "position" : 3
    },
    {
      "token" : "的",
      "start_offset" : 7,
      "end_offset" : 8,
      "type" : "CN_CHAR",
      "position" : 4
    },
    {
      "token" : "筆記本",
      "start_offset" : 8,
      "end_offset" : 11,
      "type" : "CN_WORD",
      "position" : 5
    },
    {
      "token" : "廠商",
      "start_offset" : 11,
      "end_offset" : 13,
      "type" : "CN_WORD",
      "position" : 6
    }
  ]
}

參考文檔:

http://blog.csdn.net/jam00/article/details/52983056
http://www.cnblogs.com/xing901022/p/5910139.html

1.5 熱詞更新配置

網(wǎng)絡(luò)詞語(yǔ)日新月異逢防,如何讓新出的網(wǎng)絡(luò)熱詞(或特定的詞語(yǔ))實(shí)時(shí)的更新到我們的搜索當(dāng)中呢 先用 ik 測(cè)試一下

curl -XGET 'http://localhost:9200/_analyze?pretty&analyzer=ik_max_word' -d '成龍?jiān)惛凵?

返回結(jié)果

{
  "tokens" : [
    {
      "token" : "成龍",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "CN_WORD",
      "position" : 0
    },
    {
      "token" : "原名",
      "start_offset" : 2,
      "end_offset" : 4,
      "type" : "CN_WORD",
      "position" : 1
    },
    {
      "token" : "陳",
      "start_offset" : 4,
      "end_offset" : 5,
      "type" : "CN_CHAR",
      "position" : 2
    },
    {
      "token" : "港",
      "start_offset" : 5,
      "end_offset" : 6,
      "type" : "CN_CHAR",
      "position" : 3
    },
    {
      "token" : "生",
      "start_offset" : 6,
      "end_offset" : 7,
      "type" : "CN_CHAR",
      "position" : 4
    }
  ]
}

ik 的主詞典中沒(méi)有”陳港生” 這個(gè)詞,所以被拆分了蒲讯。

現(xiàn)在我們來(lái)配置一下忘朝,修改 IK 的配置文件 :ES 目錄/plugins/ik/config/ik/IKAnalyzer.cfg.xml

修改如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">  
<properties>  
    <comment>IK Analyzer 擴(kuò)展配置</comment>
    <!--用戶可以在這里配置自己的擴(kuò)展字典 -->    
    <entry key="ext_dict">custom/mydict.dic;custom/single_word_low_freq.dic</entry>     
     <!--用戶可以在這里配置自己的擴(kuò)展停止詞字典-->
    <entry key="ext_stopwords">custom/ext_stopword.dic</entry>
    <!--用戶可以在這里配置遠(yuǎn)程擴(kuò)展字典 --> 
    <entry key="remote_ext_dict">http://192.168.1.136/hotWords.php</entry>
    <!--用戶可以在這里配置遠(yuǎn)程擴(kuò)展停止詞字典-->
    <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

這里我是用的是遠(yuǎn)程擴(kuò)展字典,因?yàn)榭梢允褂闷渌绦蛘{(diào)用更新判帮,且不用重啟ES局嘁,很方便;當(dāng)然使用自定義的 mydict.dic 字典也是很方便的晦墙,一行一個(gè)詞悦昵,自己加就可以了。

既然是遠(yuǎn)程詞典晌畅,那么就要是一個(gè)可訪問(wèn)的鏈接但指,可以是一個(gè)頁(yè)面,也可以是一個(gè)txt的文檔,但要保證輸出的內(nèi)容是 utf-8 的格式棋凳。

hotWords.php 的內(nèi)容

$s = <<<'EOF'
陳港生
元樓
藍(lán)瘦
EOF;
header('Last-Modified: '.gmdate('D, d M Y H:i:s', time()).' GMT', true, 200);
header('ETag: "5816f349-19"');
echo $s;

ik 接收兩個(gè)返回的頭部屬性 Last-Modified 和 ETag拦坠,只要其中一個(gè)有變化,就會(huì)觸發(fā)更新剩岳,ik 會(huì)每分鐘獲取一次贞滨,

重啟 Elasticsearch ,查看啟動(dòng)記錄拍棕,看到了三個(gè)詞已被加載進(jìn)來(lái)

[2016-10-31 15:08:57,749][INFO ][ik-analyzer              ] 陳港生
[2016-10-31 15:08:57,749][INFO ][ik-analyzer              ] 元樓
[2016-10-31 15:08:57,749][INFO ][ik-analyzer              ] 藍(lán)瘦

現(xiàn)在我們來(lái)測(cè)試一下晓铆,再次執(zhí)行上面的請(qǐng)求,返回

...
  }, {
    "token" : "陳港生",
    "start_offset" : 5,
    "end_offset" : 8,
    "type" : "CN_WORD",
    "position" : 2
  }, {
...

可以看到 ik 分詞器已經(jīng)匹配到了 “陳港生” 這個(gè)詞

參考文檔:

http://blog.csdn.net/jam00/article/details/52983056

2绰播、pinyin 分詞器

2.1 安裝pinyin分詞器

pinyin分詞器可以讓用戶輸入拼音骄噪,就能查找到相關(guān)的關(guān)鍵詞。比如在某個(gè)商城搜索中蠢箩,輸入 yonghui链蕊,就能匹配到永輝。這樣的體驗(yàn)還是非常好的忙芒。

pinyin分詞器的安裝與IK是一樣的示弓。 下載地址:

https://github.com/medcl/elasticsearch-analysis-pinyin

對(duì)應(yīng)的releases版本

https://github.com/medcl/elasticsearch-analysis-pinyin/releases

安裝方式和ik分詞器一樣,這里就不介紹了呵萨。

安裝路徑是/data/elasticsearch/elasticsearch-5.5.3/plugins/analysis-pinyin

重啟elasticsearch生效

2.2 測(cè)試

測(cè)試地址

curl -XGET 'http://localhost:9200/_analyze?pretty&analyzer=pinyin' -d '劉德華'

返回結(jié)果

{
  "tokens" : [
    {
      "token" : "liu",
      "start_offset" : 0,
      "end_offset" : 1,
      "type" : "word",
      "position" : 0
    },
    {
      "token" : "ldh",
      "start_offset" : 0,
      "end_offset" : 3,
      "type" : "word",
      "position" : 0
    },
    {
      "token" : "de",
      "start_offset" : 1,
      "end_offset" : 2,
      "type" : "word",
      "position" : 1
    },
    {
      "token" : "hua",
      "start_offset" : 2,
      "end_offset" : 3,
      "type" : "word",
      "position" : 2
    }
  ]
}

3奏属、其它分詞器

參考文檔:

http://www.54tianzhisheng.cn/2017/09/07/Elasticsearch-analyzers/

四、工具安裝

1潮峦、Sense安裝使用

對(duì)于不熟悉Linux的人來(lái)講囱皿,使用curl是個(gè)硬傷,所以 Chrome有個(gè)插件Sense可以幫我們很方便的操作Elasticsearch忱嘹。國(guó)內(nèi)需要FQ

image

先來(lái)測(cè)試下分詞 [圖片上傳失敗...(image-aa9f6f-1560925855524)]
轉(zhuǎn)帖地址:https://www.cnblogs.com/cheyunhua/p/8087658.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末嘱腥,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子拘悦,更是在濱河造成了極大的恐慌齿兔,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件础米,死亡現(xiàn)場(chǎng)離奇詭異分苇,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)屁桑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)医寿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蘑斧,你說(shuō)我怎么就攤上這事靖秩⌒刖欤” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵沟突,是天一觀的道長(zhǎng)花颗。 經(jīng)常有香客問(wèn)我,道長(zhǎng)事扭,這世上最難降的妖魔是什么捎稚? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任乐横,我火速辦了婚禮求橄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘葡公。我一直安慰自己罐农,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布催什。 她就那樣靜靜地躺著涵亏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蒲凶。 梳的紋絲不亂的頭發(fā)上气筋,一...
    開(kāi)封第一講書(shū)人閱讀 49,749評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音旋圆,去河邊找鬼宠默。 笑死,一個(gè)胖子當(dāng)著我的面吹牛灵巧,可吹牛的內(nèi)容都是我干的搀矫。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼刻肄,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼瓤球!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起敏弃,我...
    開(kāi)封第一講書(shū)人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤卦羡,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后麦到,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體绿饵,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年隅要,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蝴罪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡步清,死狀恐怖要门,靈堂內(nèi)的尸體忽然破棺而出虏肾,到底是詐尸還是另有隱情,我是刑警寧澤欢搜,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布封豪,位于F島的核電站,受9級(jí)特大地震影響炒瘟,放射性物質(zhì)發(fā)生泄漏吹埠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一疮装、第九天 我趴在偏房一處隱蔽的房頂上張望缘琅。 院中可真熱鬧,春花似錦廓推、人聲如沸刷袍。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)呻纹。三九已至,卻和暖如春专缠,著一層夾襖步出監(jiān)牢的瞬間雷酪,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工涝婉, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留哥力,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓嘁圈,卻偏偏與公主長(zhǎng)得像省骂,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子最住,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348