环境搭建

现在有两台服务器分别为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 phantomjs-prebuilt@2.1.14 --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" : "美国" }}
  }'