环境搭建
现在有两台服务器分别为10.19.40.63和10.19.40.64,分别在这两台服务器上安装两个节点。
1、下载elasticsearch-6.4.1.tar.gz安装包
2、解压安装包:tar -zxvf elasticsearch-6.4.1.tar.gz。
3、在10.19.40.63服务器上创建elasticsearch01和elasticsearch02目录,在10.19.40.64服务器上创建elasticsearch03和elasticsearch04目录,将解压的文件拷贝到四个目录下。
4、在四个节点的config目录下的elasticsearch.yml配置文件进行配置各节点的信息。配置信息如下
#集群的名称 cluster.name: es6 #节点名称,其余两个节点分别为node-2 和node-3 node.name: node-1 #指定该节点是否有资格被选举成为master节点,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master node.master: true #允许该节点存储数据(默认开启) node.data: true #索引数据的存储路径 path.data: /usr/local/elk/elasticsearch/data #日志文件的存储路径 path.logs: /usr/local/elk/elasticsearch/logs #设置为true来锁住内存。因为内存交换到磁盘对服务器性能来说是致命的,当jvm开始swapping时es的效率会降低,所以要保证它不swap bootstrap.memory_lock: true #绑定的ip地址 network.host: 0.0.0.0 #设置对外服务的http端口,默认为9200 http.port: 9200 # 设置节点间交互的tcp端口,默认是9300 transport.tcp.port: 9300 #Elasticsearch将绑定到可用的环回地址,并将扫描端口9300到9305以尝试连接到运行在同一台服务器上的其他节点。#这提供了自动集群体验,而无需进行任何配置。数组设置或逗号分隔的设置。每个值的形式应该是host:port或host#(如果没有设置,port默认设置会transport.profiles.default.port 回落到transport.tcp.port)。#请注意,IPv6主机必须放在括号内。默认为127.0.0.1, [::1] discovery.zen.ping.unicast.hosts: ["192.168.8.101:9300","192.168.8.103:9300", "192.168.8.104:9300"] #如果没有这种设置,遭受网络故障的集群就有可能将集群分成两个独立的集群 - 分裂的大脑 - 这将导致数据丢失 discovery.zen.minimum_master_nodes: 3
5、创建用户组和用户用来管理elasticsearch:
groupadd elsearch
useradd elsearch -g elsearch -p elasticsearch
chown -R elsearch:elsearch elasticsearch01
chown -R elsearch:elsearch elasticsearch02
6、在通过指令:su es,转换用户到es。进入elasticsearch/bin目录。执行./elasticsearch -d启动服务。
7、如果报下图错误:
需要修改如下配置文件:
/etc/security/limits.conf文件需要添加如下参数
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
/etc/sysctl.conf文件需要添加如下参数
vm.max_map_count = 655360
/etc/security/limits.d/20-nproc.conf文件添加如下参数
soft nproc 4096
在修改完配置文件后,进行热加载:
sysctl -p
elasticsearch-head搭建
1、需要安装相应的依赖包node.js和python
2、解压elasticsearch-head-master.zip压缩包
3、cd elasticsearch-head-master目录,执行如下指令:npm install
4、如果在执行npm install时,报如下错误:
则需要执行如下指令:
npm install [email protected] --ignore-scripts
5、如下配置文件
- 修改Head主目录下的Gruntfile.js
- 修改elasticsearch下的配置文件elasticsearch.yml
#在文件末尾添加即可,此处需要注意yml的格式问题(有的博友已经遇到了不生效,详见评论---20180927) http.cors.enabled: true http.cors.allow-origin: "*"
6、启动head:npm run start
使用IK分词器
1、可以通过命令:unzip 文件夹 进行解压elasticsearch-analysis-ik-6.4.1.zip。
2、在plugins目录下创建ik目录,将解压的文件复制到ik目录下。
3、重新启动elasticsearch。
4、如果日志中出现如下内容,则安装成功:
基本的索引操作指令
1、查看集群的状态信息
http://10.19.40.63:9200/_cluster/health?pretty
2、查看索引
curl http://10.19.40.63:9200/_cat/indices/index?v
3、创建索引
curl -XPUT http://10.19.40.63:9200/index
4、查看索引的基本信息
curl -XGET http://10.19.40.63:9200/index/_settings
5、查看索引的全部映射
curl http://10.19.40.63:9200/index/_mapping
6、查看分词效果
http://10.19.40.63:9200/_analyze
{
"analyzer":"standard",
"text":"中华人民共和国国歌"
}
7、创建文档映射
curl -H "Content-Type:application/json" -XPOST http://10.19.40.63:9200/index//_mapping -d'
{ "fulltext": {
"_all": {
"analyzer": "ik"
}, "properties": {
"content": {
"type" : "string",
"boost" : 8.0,
"term_vector" : "with_positions_offsets",
"analyzer" : "ik",
"include_in_all" : true
}
}
}
8、插入文档
curl -H "Content-Type:application/json" -XPOST http://10.19.40.63:9200/index/fulltext/1 -d'
{"content":"美国留给伊拉克的是个烂摊子吗"}'
9、查询索引
curl -H "Content-Type:application/json" -XPOST http://10.19.40.63:9200/index/fulltext/_search -d'
{
"query" : { "match" : { "content" : "美国" }}
}'