一、安装elasticsearch
1,下载elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.1.tar.gz
2,下载完成后解压,并且移动到 /usr/local 目录下
tar -zxvf elasticsearch-6.2.1.tar.gz
mv elasticsearch-6.2.1 /usr/local/
cd /usr/local/elasticsearch-6.2.1/
注意,elasticsearch是不能使用root用户启动的,所以需要创建新的用户和组,使用指定用户启动
3,创建用户和组
# 以root用户来 groupadd 添加一个用户组
groupadd elsearch
# 添加一个用户,-g是在用户组下 -p是密码
useradd elsearch -g elsearch -p elsearch
# 修改elasticsearch-6.2.1 目录的所属组合用户为 elsearch
chown -R elsearch:elsearch /usr/local/elasticsearch-6.2.1/
4,修改 elasticsearch.yml 配置文件
vim /usr/local/elasticsearch-6.2.1/config/elasticsearch.yml
找到 #network.host: 192.168.0.1 行,将注释打开,改成自己需要访问的机器ip,或者改成0.0.0.0允许所有ip访问
修改前
修改后
并且在文件最后面直接配置,允许跨域配置,安装可视化插件会用到
http.cors.enabled: true
http.cors.allow-origin: "*"
5,使用elsearch身份启动es
runuser -u elsearch /usr/local/elasticsearch-6.2.1/bin/elasticsearch &
备注:在后面添加 & 符号表示后台启动
ElasticSearch启动错误处理方法:
[2019-09-27T14:43:43,591][INFO ][o.e.b.BootstrapChecks ] [Gt7IdM2] bound or publishing to a non-loopback address, enforcing bootstrap checks
ERROR: [2] bootstrap checks failed
[1]: max file descriptors [4096] 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]
1,修改 /etc/security/limits.conf 在最后面追加参数
vim /etc/security/limits.conf
最后追加配置
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
2,修改 /etc/sysctl.conf 文件 在最后追加参数
vim /etc/sysctl.conf
最后追加配置
vm.max_map_count=655360
保存后执行命令
sysctl -p
启动完成后在浏览器输入 ip:9200 看到输出参数就表示es安装成功了
备注:如果使用的华为云服务器修改后可能还是报错,这是华为云服务器造成的坑,具体查看原文文档连接地址解决:
[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
华为云服务器修改配置后还是出现以上问题参照下面链接解决:
https://www.huaweicloud.com/kunpeng/software/es.html
二、安装可视化界面插件elasticsearch-head-master
1,安装elasticsearch-head-master 依赖的node环境
下载
wget https://npm.taobao.org/mirrors/node/latest-v4.x/node-v4.4.7-linux-x64.tar.gz
解压,并移动到 /usr/local 目录下
tar -zxvf node-v4.4.7-linux-x64.tar.gz
mv node-v4.4.7-linux-x64 /usr/local/
配置node环境变量
vim /etc/profile
在最后面追加配置
NODE_HOME=/usr/local/node-v4.4.7-linux-x64
NODE_PATH=$NODE_HOME/lib/node_modules
PATH=$NODE_HOME/bin:$NODE_PATH:$PATH
保存后执行命令
source /etc/profile
2,下载elasticsearch-head-master安装包
wget https://github.com/mobz/elasticsearch-head/archive/master.zip
解压并移动到 /usr/local目录下
unzip master.zip
mv elasticsearch-head-master/ /usr/local/
备注:下载较慢可以使用命令将镜像设置成阿里镜像
npm config set registry http://registry.npm.taobao.org
进入到 elasticsearch-head-master 目录,因为elasticsearch-head-master是通过grunt启动的,所以需要安装grunt插件
cd /usr/local/elasticsearch-head-master/
npm install -g grunt-cli
npm install
3,启动elasticsearch-head-master
需要在head的目录下运行
cd /usr/local/elasticsearch-head-master/
grunt server &
启动成功后在浏览器输入 ip:9100就可以访问到页面了
es各个搜索条件含义:
match 搜索key会被分词,搜索的filed中的值是分了词,然后再匹配
term 精确匹配输入的参数(不使用分析器)
wildcard 没用过
prefix 前缀匹配
fuzzy 模糊匹配
range 范围匹配 匹配数值类型,比如说对于用户样本搜索,年龄范围在20~30之间的,就用range。
query_string 查询text类型的字段
text 文本类型,文本类型可以设置分词器属性
missing 是否存在该字段值 和exists反义
三、使用 elasticsearch-head 界面工具创建一个索引库与文档
1,创建索引库
索引栏点击新建索引,输入索引名称,点击OK,分片数和副本数默认就可以了
新建完成后就可以在列表看到刚刚新建的索引库了
2, 再复合查询里面新建索引库的文档信息
question_dev/doc/_mapping
question_dev:表示索引库名称
doc:文档名称
_mapping:关键字,表示索引库文档映射操作操作
完成后提交,再返回数据浏览,就能够看到刚刚新建的索引库文档字段了
文档创建数据:
{
"properties": {
"question_id": {
"type": "integer"
},
"title": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
},
"answer": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
},
"type_ids": {
"type": "text"
},
"create_time": {
"format": "yyyy-MM-dd HH:mm:ss",
"type": "date"
}
}
}
3,向文档里面添加数据
添加完成后再次返回数据浏览就能够查看到刚刚添加的数据了
数据添加json
{
"question_id": 1,
"title": "String 是最基本的数据类型吗?",
"answer": "<p>不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;</p><p>除了基本类型(primitive type)和枚举类型(enumeration type),剩下的都是引用类型(reference type)。</p>",
"type_ids": "1",
"create_time": "2019-03-25 16:20:50"
}
4,搜索文档,按照标题搜索
question_dev/doc/_search?q=title:今天你吃了吗
question_dev/doc/_search?q=title:数据类型