【ES实践篇一:ElasticSearch单机版部署】

ES的安装

单实例安装

# 安装ES
mkdir software
cd /software
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.2.tar.gz
tar zxvf elasticsearch-6.6.2.tar.gz
cd elasticsearch-6.6.2
ls
./bin/elasticsearch -d
localhost:9200
ES1.png

中文分词器插件ik安装

由于搜索引擎需要根据文本进行分词,对于分词后的每个词汇建立倒排索引,以便于后续通过keyword进行检索。原生的ES是老外开发的,对于英文分词支持较好,对于中文分词支持较差,国人开发了中文分词插件,以增强ES对于中文分词的支持能力。ik插件的详细介绍:es-ik项目地址

这里是对用6.6.2版本es插件的快捷安装方式,如果需要安装其他版本ES对应的ik插件,请参考官网,否则安装出现问题或者无法使用本人不负责。

es@iZbp1bx0xi202s8uyn62h9Z:~/software/elasticsearch-6.6.2$ ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.2/elasticsearch-analysis-ik-6.6.2.zip
-> Downloading https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.2/elasticsearch-analysis-ik-6.6.2.zip
[=================================================] 100%   
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     WARNING: plugin requires additional permissions     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.net.SocketPermission * connect,resolve
See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.

Continue with installation? [y/N]y
-> Installed analysis-ik

注意:版本需要与ES的版本一一对应,否则可能会出现问题。

如果要卸载该分词器,可以使用如下的指令:

$ ./bin/elasticsearch-plugin remove analysis-ik

然后,新建一个 Index,指定需要分词的字段。这一步根据数据结构而异,下面的命令只针对本文。基本上,凡是需要搜索的中文字段,都要单独设置一下。

curl -X PUT 'localhost:9200/accounts' -d '
{
  "mappings": {
    "person": {
      "properties": {
        "user": {
          "type": "text",
          "analyzer": "ik_max_word",
          "search_analyzer": "ik_max_word"
        },
        "title": {
          "type": "text",
          "analyzer": "ik_max_word",
          "search_analyzer": "ik_max_word"
        },
        "desc": {
          "type": "text",
          "analyzer": "ik_max_word",
          "search_analyzer": "ik_max_word"
        }
      }
    }
  }
}'

上面代码中,首先新建一个名称为accounts的 Index,里面有一个名称为person的 Type。person有三个字段。

  • user
  • title
  • desc
    这三个字段都是中文,而且类型都是文本(text),所以需要指定中文分词器,不能使用默认的英文分词器。 Elastic 的分词器称为 analyzer。我们对每个字段指定分词器。
"user": {
  "type": "text",
  "analyzer": "ik_max_word",
  "search_analyzer": "ik_max_word"
}

上面代码中,analyzer是字段文本的分词器,search_analyzer是搜索词的分词器。ik_max_word分词器是插件ik提供的,可以对文本进行最大数量的分词。

前端管理插件head安装

安装head插件以方便在通过前端对ES集群进行管理。

# 安装Nodejs
sudo apt-get remove nodejs ^node-* nodejs-*
sudo apt-get autoremove
sudo apt-get clean
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install nodejs
curl https://raw.githubusercontent.com/creationix/nvm/v0.13.1/install.sh | sh
# After this, open a new terminal and check the npm version:
npm --version

# 安装head插件
wget https://github.com/mobz/elasticsearch-head/archive/master.zip
unzip master.zip
cd elasticsearch-head-master/
npm install
npm run start
ES2.png

观察到界面上集群状态异常,显示为“not connected”,需要修改ES的配置

cd ../elasticsearch-6.6.2
vim config/elasticsearch.yml
# 在末尾添加如下的内容,解决跨域访问的问题,注意冒号后面需要加空格,否则ES运行会报异常
http.cors.enabled: true
http.cors.allow-origin: "*"
# 重新启动ES和head插件,并且访问如下的地址:
npm run start
localhost:9100
ES3.png

错误处理

执行npm install过程中产生如下的报错信息:

node npm install Error: CERT_UNTRUSTED

ssl验证问题,使用下面的命令取消ssl验证即可解决

npm config set strict-ssl false

分布式安装

首先,我们来了解一下ES配置文件elasticsearch.yml中的几个关键属性:

  • cluster.name :配置es的集群名称,不同的集群用名字来区分, 如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。
  • node.name:节点名称,一部服务器一个节点,分别为node-1,node-2,node-3 。
  • http.port :服务端口,一般默认是9200,如果在同一部服务器上面配置多个elasticsearch服务,则端口需要不同
  • discovery.zen.ping.unicast.hosts:自动检索可用节点,设置了这个参数才会自动检测可用的节点。 同一集群名下,elasticsearch会自动去发现其他的节点。

配置master节点

mv elasticsearch-6.6.2 es_master
cd es_master
vim config/elasticsearch.yml

完成上述文件复制之后,master节点的配置都在es_master文件夹下了。

编辑config/elasticsearch.yml,在文件末尾添加如下信息:

cluster.name: cloud
node.name: master
node.master: true
# 配置外网访问时,需要将network.host对应的值修改为外放访问的IP地址
network.host: 127.0.0.1

修改保存完成之后,重启master节点。

ES4.png

配置slave节点

为了节省资源,下面的示例是在同一台机器上部署两个从节点。

mkdir es_slave
cp elasticsearch-6.6.2.tar.gz es_slave/
cd es_slave
tar zxvf elasticsearch-6.6.2.tar.gz
cp -r elasticsearch-6.6.2 slave1
cp -r elasticsearch-6.6.2 slave2
rm -rf elasticsearch-6.6.2.tar.gz elasticsearch-6.6.2 

完成上述文件复制之后,salve1节点的文件都在salve1文件夹下,salve2节点的文件都在salve2文件夹下。

从节点1配置

cluster.name: cloud
node.name: slave1

network.host: 127.0.0.1
http.port: 9201

discovery.zen.ping.unicast.hosts: ["127.0.0.1"]

修改保存完成之后,启动slave1节点。

./bin/elasticsearch -d
louxj424@ubuntu:~/Downloads/es_slave/slave2$ netstat -tunpl|grep 8200
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp6       0      0 127.0.0.1:8200          :::*                    LISTEN      9903/java


localhost:9100
ES5.png

从节点2配置

cluster.name: cloud
node.name: slave2

network.host: 127.0.0.1
http.port: 8000

discovery.zen.ping.unicast.hosts: ["127.0.0.1"]

修改保存完成之后,启动slave2节点。

./bin/elasticsearch -d
louxj424@ubuntu:~/Downloads/es_slave/slave2$ netstat -tunpl|grep 8000
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp6       0      0 127.0.0.1:8000          :::*                    LISTEN      11058/java
localhost:9100
ES6.png

至此,单机上面部署集群模式的ES完成。

问题解决

问题1:
运行报错:

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

运行下面的命令加以解决:

sudo sysctl -w vm.max_map_count=262144

问题2:
运行报错:

louxj424@ubuntu:~/Downloads/elasticsearch-5.5.1$ ./bin/elasticsearch
Java HotSpot(TM) Server VM warning: INFO: os::commit_memory(0x2ae00000, 2080374784, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 2080374784 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /home/louxj424/Downloads/elasticsearch-5.5.1/hs_err_pid10337.log

运行下面的命令加以解决:

# 修改jvm空间分配
vim config/jvm.options  

修改如下内容

-Xms2g  -》  -Xms512m  
-Xmx2g  -》  -Xmx512m  

问题2:
运行报错:

max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

解决方案可以参考:
解决方案

启动异常ERROR: bootstrap checks failed

ERROR: [2] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

解决方案: 解决方法:在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面:

bootstrap.memory_lock: false
bootstrap.system_call_filter: false

接着报错:

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

解决方案:

$ ulimit -n 65536
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容