国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

全文搜索引擎 Elasticsearch 集群搭建入門教程

BlackMass / 3364人閱讀

摘要:介紹是一個(gè)基于的搜索服務(wù)器。它提供了一個(gè)分布式多用戶能力的全文搜索引擎,基于接口。是用開發(fā)的,并作為許可條款下的開放源碼發(fā)布,是當(dāng)前流行的企業(yè)級搜索引擎。本文從零開始,講解如何使用搭建自己的全文搜索引擎。

介紹

ElasticSearch 是一個(gè)基于 Lucene 的搜索服務(wù)器。它提供了一個(gè)分布式多用戶能力的全文搜索引擎,基于 RESTful web 接口。Elasticsearch 是用 Java 開發(fā)的,并作為 Apache 許可條款下的開放源碼發(fā)布,是當(dāng)前流行的企業(yè)級搜索引擎。設(shè)計(jì)用于云計(jì)算中,能夠達(dá)到實(shí)時(shí)搜索,穩(wěn)定,可靠,快速,安裝使用方便。基百科、Stack Overflow、Github 都采用它。

本文從零開始,講解如何使用 Elasticsearch 搭建自己的全文搜索引擎。每一步都有詳細(xì)的說明,大家跟著做就能學(xué)會(huì)。

環(huán)境

1、VMware

2、Centos 6.6

3、Elasticsearch 5.5.2

4、JDK 1.8

VMware 安裝以及在 VMware 中安裝 Centos 這個(gè)就不說了,環(huán)境配置直接默認(rèn)就好,不過分配給機(jī)器的內(nèi)存最好設(shè)置大點(diǎn)(建議 2G),

使用 dhclient 命令來自動(dòng)獲取 IP 地址,查看獲取的 IP 地址則使用命令 ip addr 或者 ifconfig ,則會(huì)看到網(wǎng)卡信息和 lo 卡信息。

給虛擬機(jī)額中的 linux 設(shè)置固定的 ip(因?yàn)楹竺姘l(fā)現(xiàn)每次機(jī)器重啟后又要重新使用 dhclient 命令來自動(dòng)獲取 IP 地址)

vim  /etc/sysconfig/network-scripts/ifcfg-eth0

修改:

onboot=yes
bootproto=static

增加:(下面可設(shè)置可不設(shè)置)

IPADDR=192.168.1.113            網(wǎng)卡IP地址
GATEWAY=192.168.1.1
NETMASK=255.255.255.0

設(shè)置好之后,把網(wǎng)絡(luò)服務(wù)重啟一下, service network restart

修改 ip 地址參考: http://jingyan.baidu.com/arti...

大環(huán)境都準(zhǔn)備好了,下面開始安裝步驟:

安裝 JDK 1.8

先卸載自帶的 openjdk,查找 openjdk

rpm -qa | grep java

卸載 openjdk

yum -y remove  java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el65.x8664
yum -y remove java-1.6.0-openjdk-1.6.0.0-11.1.13.4.el6.x86_64

解壓 JDK 安裝包:

附上jdk1.8的下載地址:
http://www.oracle.com/technet...

解壓完成后配置一下環(huán)境變量就 ok

1、在/usr/local/下創(chuàng)建Java文件夾

cd /usr/local/                                    進(jìn)入目錄
mkdir java                                     新建java目錄

2、文件夾創(chuàng)建完畢,把安裝包拷貝到 Java 目錄中,然后解壓 jdk 到當(dāng)前目錄

cp /usr/jdk-8u144-linux-x64.tar.gz /usr/local/java/    **注意匹配你自己的文件名**  拷貝到j(luò)ava目錄
tar -zxvf jdk-8u144-linux-x64.tar.gz       解壓到當(dāng)前目錄(Java目錄)

3、解壓完之后,Java目錄中會(huì)出現(xiàn)一個(gè)jdk1.8.0_144的目錄,這就解壓完成了。之后配置一下環(huán)境變量。
編輯/etc/下的profile文件,配置環(huán)境變量

vi /etc/profile                  進(jìn)入profile文件的編輯模式

在最后邊追加一下內(nèi)容(**配置的時(shí)候一定要根據(jù)自己的目錄情況而定哦!**)

 JAVA_HOME=/usr/local/java/jdk1.8.0_144
 CLASSPATH=$JAVA_HOME/lib/
 PATH=$PATH:$JAVA_HOME/bin
 export PATH JAVA_HOME CLASSPATH

之后保存并退出文件之后。

讓文件生效: source /etc/profile

在控制臺(tái)輸入Java 和 Java -version 看有沒有信息輸出,如下: java -version

java version "1.8.0_144"
 Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
 Java HotSpot(TM) Client VM (build 25.60-b23, mixed mode)

能顯示以上信息,就說明 JDK 安裝成功啦

安裝 Maven

因?yàn)楹竺婵赡軙?huì)用到 maven ,先裝上這個(gè)。

1、下載 maven

wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.2.5/binaries/apache-maven-3.2.5-bin.tar.gz

2、解壓至 /usr/local 目錄

tar -zxvf apache-maven-3.2.5-bin.tar.gz

3、配置公司給的配置

替換成公司給的 setting.xml 文件,修改關(guān)于本地倉庫的位置, 默認(rèn)位置: ${user.home}/.m2/repository

4、配置環(huán)境變量etc/profile 最后添加以下兩行

export MAVEN_HOME=/usr/local/apache-maven-3.2.5
export PATH=${PATH}:${MAVEN_HOME}/bin

5、測試

[root@localhost ~]# mvn -v
Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T09:29:23-08:00)
Maven home: /usr/local/apache-maven-3.2.5

VMware 虛擬機(jī)里面的三臺(tái)機(jī)器 IP 分別是:

192.168.153.133
192.168.153.134
192.168.153.132
配置 hosts

在 /etc/hosts下面編寫:ip node 節(jié)點(diǎn)的名字(域名解析)

vim  /etc/hosts

新增:

192.168.153.133  es1
192.168.153.134  es2
192.168.153.132  es3
設(shè)置 SSH 免密碼登錄

安裝expect命令 : yum -y install expect

將 ssh_p2p.jar 隨便解壓到任何目錄下: (這個(gè) jar 包可以去網(wǎng)上下載)

unzip ssh_p2p.zip

修改 resource 的 ip 值

vim /ssh_p2p/deploy_data/resource  (各個(gè)節(jié)點(diǎn)和賬戶名,密碼,free代表相互都可以無密碼登陸)
#設(shè)置為你每臺(tái)虛擬機(jī)的ip地址,用戶名,密碼
address=(
"192.168.153.133,root,123456,free"
"192.168.153,134,root,123456,free"
"192.168.153.132,root,123456,free"
)

修改 start.sh 的運(yùn)行權(quán)限

chmod u+x start.sh

運(yùn)行

./start.sh

測試:

ssh ip地址 (測試是否可以登錄)

安裝 ElasticSearch

下載地址: https://www.elastic.co/downlo...

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.2.tar.gz
cd /usr/local
tar -zxvf   elasticsearch-5.5.2.tar.gz

su tzs 切換到 tzs 用戶下 ( 默認(rèn)不支持 root 用戶)

sh /usr/local/elasticsearch/bin/elasticsearch -d 其中 -d 表示后臺(tái)啟動(dòng)

在 vmware 上測試是否成功:curl http://localhost:9200/

出現(xiàn)如上圖這樣的效果,就代表已經(jīng)裝好了。

elasticsearch 默認(rèn) restful-api 的端口是 9200 不支持 IP 地址,也就是說無法從主機(jī)訪問虛擬機(jī)中的服務(wù),只能在本機(jī)用 http://localhost:9200 來訪問。如果需要改變,需要修改配置文件 /usr/local/elasticsearch/config/elasticsearch.yml 文件,加入以下兩行:

network.bind_host: 0.0.0.0
network.publish_host: _nonloopback:ipv4

或去除 network.host 和 http.port 之前的注釋,并將 network.host 的 IP 地址修改為本機(jī)外網(wǎng) IP。然后重啟,Elasticsearch

關(guān)閉方法(輸入命令: ps -ef | grep elasticsearch ,找到進(jìn)程,然后 kill 掉就行了。

如果外網(wǎng)還是不能訪問,則有可能是防火墻設(shè)置導(dǎo)致的 ( 關(guān)閉防火墻:service iptables stop )

修改配置文件:vim config/elasticsearch.yml

cluster.name : my-app (集群的名字,名字相同的就是一個(gè)集群)

node.name : es1 (節(jié)點(diǎn)的名字, 和前面配置的 hosts 中的 name 要一致)

path.data: /data/elasticsearch/data (數(shù)據(jù)的路徑。沒有要?jiǎng)?chuàng)建(mkdir -p /data/elasticsearch/{data,logs}),并且給執(zhí)行用戶權(quán)限 chown tzs /data/elasticsearch/{data,logs} -R
path.logs: /data/elasticsearch/logs (數(shù)據(jù) log 信息的路徑,同上)
network.host: 0.0.0.0 //允許外網(wǎng)訪問,也可以是自己的ip地址
http.port: 9200 //訪問的端口
discovery.zen.ping.unicast.hosts: ["192.168.153.133", "192.168.153.134", "192.168.153.132"] //各個(gè)節(jié)點(diǎn)的ip地址

記得需要添加上:(這個(gè)是安裝 head 插件要用的, 目前不需要)
http.cors.enabled: true
http.cors.allow-origin: "*"

最后在外部瀏覽器的效果如下圖:

安裝 IK 中文分詞

可以自己下載源碼使用 maven 編譯,當(dāng)然如果怕麻煩可以直接下載編譯好的

https://github.com/medcl/elas...

注意下載對應(yīng)的版本放在 plugins 目錄下

解壓

unzip elasticsearch-analysis-ik-5.5.2.zip

在 es 的 plugins 下新建 ik 目錄

mkdir ik

將剛才解壓的復(fù)制到ik目錄下

cp -r elasticsearch/* ik

刪除剛才解壓后的

rm -rf elasticsearch
rm -rf elasticsearch-analysis-ik-5.5.2.zip
IK 帶有兩個(gè)分詞器

ik_max_word :會(huì)將文本做最細(xì)粒度的拆分;盡可能多的拆分出詞語

ik_smart:會(huì)做最粗粒度的拆分;已被分出的詞語將不會(huì)再次被其它詞語占有

安裝完 IK 中文分詞器后(當(dāng)然不止這種中文分詞器,還有其他的,可以參考我的文章 Elasticsearch 默認(rèn)分詞器和中分分詞器之間的比較及使用方法),測試區(qū)別如下:

ik_max_word

curl -XGET "http://192.168.153.134:9200/_..." -d "聯(lián)想是全球最大的筆記本廠商"

{
  "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
    }
  ]
}
ik_smart

curl -XGET "http://localhost:9200/_analyz..." -d "聯(lián)想是全球最大的筆記本廠商"

{
  "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
    }
  ]
}
安裝 head 插件

elasticsearch-head 是一個(gè) elasticsearch 的集群管理工具,它是完全由 html5 編寫的獨(dú)立網(wǎng)頁程序,你可以通過插件把它集成到 es。

效果如下圖:(圖片來自網(wǎng)絡(luò))

安裝 git
yum remove git
yum install git
git clone git://github.com/mobz/elasticsearch-head.git   拉取 head 插件到本地,或者直接在 GitHub 下載 壓縮包下來
安裝nodejs

先去官網(wǎng)下載 node-v8.4.0-linux-x64.tar.xz

tar -Jxv -f  node-v8.4.0-linux-x64.tar.xz
mv node-v8.4.0-linux-x64  node

環(huán)境變量設(shè)置:

vim  /etc/profile

新增:

export NODE_HOME=/opt/node
export PATH=$PATH:$NODE_HOME/bin
export NODE_PATH=$NODE_HOME/lib/node_modules

使配置文件生效(這步很重要,自己要多注意這步)

source /etc/profile

測試是否全局可用了:

node -v

然后

mv elasticsearch-head head
cd head/
npm install -g grunt-cli
npm install
grunt server

再 es 的配置文件中加:

http.cors.enabled: true
http.cors.allow-origin: "*"

在瀏覽器打開 http://192.168.153.133:9100/ 就可以看到效果了,

遇到問題

把坑都走了一遍,防止以后再次入坑,特此記錄下來

1、ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")

改變 elasticsearch 文件夾所有者到當(dāng)前用戶

sudo chown -R noroot:noroot elasticsearch

這是因?yàn)?elasticsearch 需要讀寫配置文件,我們需要給予 config 文件夾權(quán)限,上面新建了 elsearch 用戶,elsearch 用戶不具備讀寫權(quán)限,因此還是會(huì)報(bào)錯(cuò),解決方法是切換到管理員賬戶,賦予權(quán)限即可:

sudo -i

chmod -R 775 config

2、WARN [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root

原因是elasticsearch默認(rèn)是不支持用root用戶來啟動(dòng)的。

解決方案一:Des.insecure.allow.root=true

修改/usr/local/elasticsearch-2.4.0/bin/elasticsearch,

添加 ES_JAVA_OPTS="-Des.insecure.allow.root=true"

或執(zhí)行時(shí)添加: sh /usr/local/elasticsearch-2.4.0/bin/elasticsearch -d -Des.insecure.allow.root=true

注意:正式環(huán)境用root運(yùn)行可能會(huì)有安全風(fēng)險(xiǎn),不建議用root來跑。

解決方案二:添加專門的用戶

useradd elastic
chown -R elastic:elastic  elasticsearch-2.4.0
su elastic
sh /usr/local/elasticsearch-2.4.0/bin/elasticsearch -d

3、UnsupportedOperationException: seccomp unavailable: requires kernel 3.5+ with CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER compiled in

只是警告,使用新的linux版本,就不會(huì)出現(xiàn)此類問題了。

4、ERROR: [4] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

原因:無法創(chuàng)建本地文件問題,用戶最大可創(chuàng)建文件數(shù)太小

解決方案:切換到 root 用戶,編輯 limits.conf 配置文件, 添加類似如下內(nèi)容:

vim /etc/security/limits.conf

添加如下內(nèi)容:

*  soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

[2]: max number of threads [1024] for user [tzs] is too low, increase to at least [2048]

原因:無法創(chuàng)建本地線程問題,用戶最大可創(chuàng)建線程數(shù)太小

解決方案:切換到root用戶,進(jìn)入limits.d目錄下,修改90-nproc.conf 配置文件。

vim /etc/security/limits.d/90-nproc.conf

找到如下內(nèi)容:

soft nproc 1024

修改為

soft nproc 2048

[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

原因:最大虛擬內(nèi)存太小

root用戶執(zhí)行命令:

sysctl -w vm.max_map_count=262144

或者修改 /etc/sysctl.conf 文件,添加 “vm.max_map_count”設(shè)置
設(shè)置后,可以使用
$ sysctl -p

[4]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

原因:Centos6不支持SecComp,而ES5.4.1默認(rèn)bootstrap.system_call_filter為true進(jìn)行檢測,所以導(dǎo)致檢測失敗,失敗后直接導(dǎo)致ES不能啟動(dòng)。
詳見 :https://github.com/elastic/el...

解決方法:在elasticsearch.yml中新增配置bootstrap.system_call_filter,設(shè)為false,注意要在Memory下面:
bootstrap.memory_lock: false
bootstrap.system_call_filter: false

5、 java.lang.IllegalArgumentException: property [elasticsearch.version] is missing for plugin [head]

再 es 的配置文件中加:

http.cors.enabled: true
http.cors.allow-origin: "*"
最后

整個(gè)搭建的過程全程自己手動(dòng)安裝,不易,如果安裝很多臺(tái)機(jī)器,是否可以寫個(gè)腳本之類的自動(dòng)搭建呢?可以去想想的。首發(fā)于:http://www.54tianzhisheng.cn/...,轉(zhuǎn)載請注明出處,謝謝配合!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/70391.html

相關(guān)文章

  • 全文搜索引擎 Elasticsearch 集群搭建入門教程

    摘要:介紹是一個(gè)基于的搜索服務(wù)器。它提供了一個(gè)分布式多用戶能力的全文搜索引擎,基于接口。是用開發(fā)的,并作為許可條款下的開放源碼發(fā)布,是當(dāng)前流行的企業(yè)級搜索引擎。本文從零開始,講解如何使用搭建自己的全文搜索引擎。 介紹 ElasticSearch 是一個(gè)基于 Lucene 的搜索服務(wù)器。它提供了一個(gè)分布式多用戶能力的全文搜索引擎,基于 RESTful web 接口。Elasticsearch ...

    Java_oldboy 評論0 收藏0
  • 渣渣為什么要看 ElasticSearch 源碼?

    摘要:當(dāng)時(shí)自己在本地測試搭建集群后,給分配了另外一個(gè)任務(wù)就是去了解中的自帶分詞英文分詞中文分詞的相同與差異以及自己建立分詞需要注意的點(diǎn)。還有就是官網(wǎng)的文檔了,非常非常詳細(xì),還有,版本的是有中文的官方文檔,可以湊合著看。 前提 人工智能、大數(shù)據(jù)快速發(fā)展的今天,對于 TB 甚至 PB 級大數(shù)據(jù)的快速檢索已然成為剛需,大型企業(yè)早已淹沒在系統(tǒng)生成的浩瀚數(shù)據(jù)流當(dāng)中。大數(shù)據(jù)技術(shù)業(yè)已集中在如何存儲(chǔ)和處理這...

    Cciradih 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<