上一篇Blog示例用到的 ElasticSearch是一个开源的分布式搜索引擎,具备高可靠性,支持非常多的企业级搜索用例,基于Lucene构建。
【玩转ElasticSearch】横向对比ElasticSearch与Sphinx https://yq.aliyun.com/articles/54636
1、下载
https://www.elastic.co/downloads/elasticsearch
我下载的是elasticsearch-5.5.0
git 地址
https://github.com/medcl/elasticsearch-analysis-ik
2、解压运行
cd到安装目录 (我就直接放在/Users/kuaX/Downloads/elasticsearch-5.5.0)
sudo bin/elasticsearch
执行 ./elasticsearch ,这样就算运行起来了,如果常用,可以配置开机启动什么的;
别外如果权限够,可以不用执行 sudo; 结束的话按 ctrl+c, linux 命令行的基本指令
3、验证
浏览器中访问http://localhost:9200/,看到一个json结果集,表明安装成功:
{ "name" : "kNSfyPl", "cluster_name" : "elasticsearch", "cluster_uuid" : "dZChAyRPQxSeHREFHzTbWA", "version" : { "number" : "5.5.0", "build_hash" : "260387d", "build_date" : "2017-06-30T23:16:05.735Z", "build_snapshot" : false, "lucene_version" : "6.6.0" }, "tagline" : "You Know, for Search" }
4、插件安装
这里推荐使用elasticsearch-head
需要从github上面下载代码,因此没有git的,先要安装git
yum -y install git (mac 下可以用 brew代替)
安装完成后,就可以直接下载代码了:
git clone git://github.com/mobz/elasticsearch-head.git
下载后,修改下777权限(简单粗暴),然后拷贝到es的plugins下面,参考:
/ES_HOME/plugins/head/*
rm plugins/.DS_Store
重启ES,浏览器中访问http://localhost:9200/_plugin/head/,验证是否成功:
Elasticsearch教程(四) elasticsearch head 插件安装和使用: http://www.sojson.com/blog/85.html
https://github.com/mobz/elasticsearch-head
我安装不成功,其实在目录下elasticsearch-head 直接点开 index.html 就行,因为head插件本质上还是一个nodejs的工程
./bin/elasticsearch-plugin install install elasticsearch-head
热更新 IK 分词使用方法:http://blog.csdn.net/wulex/article/details/70888749
git clone https://github.com/medcl/elasticsearch-analysis-ik.git
mvn package
ElasticSearch安装ik分词插件 https://my.oschina.net/xiaohui249/blog/232784
ElasticSearch5.3安装IK分词器并验证 http://blog.csdn.net/u010504064/article/details/70214040
git clone https://github.com/medcl/elasticsearch-analysis-ik.git
Install IK分词 (按github来的)
1.download or compile
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.6.1/elasticsearch-analysis-ik-5.6.1.zip
使用:
A、示例初始化blog索引
curl -X PUT http://localhost:9200/blog -d '{
"settings" : {
"index" : {
"number_of_shards" : 3,
"number_of_replicas" : 0
}
}
}'
curl -X POST http://localhost:9200/blog/blog/_mapping -d '{
"properties": {
"id": { "type": "text", "index":"no" },
"title": { "type": "text","analyzer": "ik_smart",
"search_analyzer": "ik_smart" },
"secondTitle": { "type": "text","analyzer": "ik_smart",
"search_analyzer": "ik_smart" },
"catalog": { "type": "keyword" },
"auther": { "type": "keyword", "index":"no" },
"img": { "type": "text", "index":"no" },
"md": { "type": "text","analyzer": "ik_smart",
"search_analyzer": "ik_smart"},
"display": {
"type": "text",
"index":"no"
},
"publishTime": {
"type": "date",
"format": "strict_date_optional_time||epoch_millis"
}
}
}'
http://localhost:9200/blog?pretty
下面测试下linux下安装ElasticSearch
1、 java_home 设置
2、
二、运行 & 关闭 elasticsearch
1.运行elasticsearch :
编辑 /home/zkpk/elasticsearch-1.7.3/bin/elasticsearch.in.sh, 设置 ES_MIN_MEM和ES_MAX_MEM,确保二者数值一致,或者可以在启动es时指定,
- 1
- 2
若想让es后台运行,则
- 1
2.关闭elasticsearch:
那么,es的停止呢?
若是es的前台运行,则用ctrl + c来停止。
若是es的后台运行,则用kill -9 进程号来停止。
![](https://i-blog.csdnimg.cn/blog_migrate/1d1f51057ae6720acefa68f4fb1e0132.png)
前台运行:可以通过”CTRL+C”组合键来停止运行
后台运行,可以通过”kill -9 进程号”停止.也可以通过REST API接口:
- 1
来关闭整个集群,通过:
- 1
来关闭单个节点.
如果是用root账号启动,会报以下错误
can not run elasticsearch as root
-
这是出于系统安全考虑设置的条件。由于ElasticSearch可以接收用户输入的脚本并且执行,为了系统安全考虑,
建议创建一个单独的用户用来运行ElasticSearch
-
创建elsearch用户组及elsearch用户
groupadd elsearch
useradd elsearch -g elsearch -p elasticsearch
-
更改elasticsearch文件夹及内部文件的所属用户及组为elsearch:elsearch
cd /opt
chown -R elsearch:elsearch elasticsearch
chown -R elsearch:elsearch /root/elasticsearch-5.5.0/bin/elasticsearch
chown -R elsearch:elsearch /home/elsearch/elasticsearch-5.5.0
-
切换到elsearch用户再启动
su elsearch
cd /root/elasticsearch-5.5.0/bin/
cd /home/elsearch/elasticsearch-5.5.0/bin
./elasticsearch
明明是1.8的java为什么启动的时候还是报错java版本低?
Couldnot
find or
load main classorg.elasticsearch.tools.JavaVersionCheckerElasticsearch
requires at least Java 8
but your Java version from /usr/java/latest/bin/java does not
meet this requirement
搞这个弄了好办天,搞定参见:
https://discuss.elastic.co/t/error-could-not-find-or-load-main-class-org-elasticsearch-tools-javaversionchecker/82213/12
说重点, 一、不能用root 新建个用户上面己经说了,二、elasticsearch必须不能放在root 目录下,放到新建的elsearch就可以了
三种配置环境变量的方法
1. 修改/etc/profile文件
如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。
·用文本编辑器打开
vim /etc/profile
·在profile文件末尾加入:
export JAVA_HOME=/usr/share/jdk1.6.0_14
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#set java environment
JAVA_HOME=/datafile/jdk1.8.0_144
JRE_HOME=/datafile/jdk1.8.0_144/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
#export JAVA_HOME JRE_HOME CLASS_PATH PATH
source /etc/profile 生效
·重新登录
·注解
a. 你要将 /usr/share/jdk1.6.0_14改为你的jdk安装目录
b. linux下用冒号“:”来分隔路径
c. $PATH / $CLASSPATH / $JAVA_HOME 是用来引用原来的环境变量的值
在设置环境变量时特别要注意不能把原来的值给覆盖掉了,这是一种
常见的错误。
d. CLASSPATH中当前目录“.”不能丢,把当前目录丢掉也是常见的错误。
e. export是把这三个变量导出为全局变量。
f. 大小写必须严格区分。
2. 修改.bash_profile文件
这种方法更为安全,它可以把使用这些环境变量的权限控制到用户级别,如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.bash_profile文件就可以了。
·用文本编辑器打开用户目录下的.bash_profile文件
·在.bash_profile文件末尾加入:
export JAVA_HOME=/usr/share/jdk1.6.0_14
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
·重新登录
3. 直接在shell下设置变量
不赞成使用这种方法,因为换个shell,你的设置就无效了,因此这种方法仅仅是临时使用,以后要使用的时候又要重新设置,比较麻烦。
只需在shell终端执行下列命令:
export JAVA_HOME=/usr/share/jdk1.6.0_14
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar