安装jdk:

yum install -y java-1.8.0-openjdk-devel


安装ES


下载 elasticsearch:

https://www.elastic.co/cn/downloads/elasticsearch


使用rpm安装:

下载:

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.0.rpm

安装:

yum install elasticsearch-6.6.0.rpm


tar包安装方法:

下载:

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.0.tar.gz

创建用户:

useradd es

改属主属组:

chown -R es:es elasticsearch-6.5.0

修改limits:修改后登出再登录

vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536

修改vm参数:限制一个进程可以拥有的VMA(虚拟内存区域)的数量

/etc/sysctl.conf
vm.max_map_count=655360

#修改后运行
sysctl -p

运行

bin/elasticsearch


配置:

        集群配置中最重要的两项是  node.name  与  network.host  ,每个节点都必须ping通。其中 node.name 是节点名称主要是在 Elasticsearch 自己的日志加以区分每一个节点信息。

        discovery.zen.ping.unicast.hosts  是集群中的节点信息,可以使用IP或主机名。

vim /etc/elasticsearch
cluster.name: aubin-cluster                                 # 集群名称
node.name: els1                                             # 节点名称,仅仅是描述名称,用于在日志中区分

path.data: /var/lib/elasticsearch                           # 数据的默认存放路径
path.logs: /var/log/elasticsearch                           # 日志的默认存放路径

network.host: 192.168.0.1                                   # 当前节点的IP地址
http.port: 9200                                             # 对外提供服务的端口,9300为集群服务的端口

discovery.zen.ping.unicast.hosts: ["172.18.68.11", "172.18.68.12","172.18.68.13"]       
# 集群个节点IP地址,也可以使用els、els.shuaiguoxia.com等名称,需要各节点能够解析

discovery.zen.minimum_master_nodes: 2                       # 为了避免脑裂,集群节点数最少为 半数+1

查看版本:

# curl -XGET localhost:9200
{
  "name" : "es1",
  "cluster_name" : "vphotoses",
  "cluster_uuid" : "1q0u6R63QXGGgcfVegPqQg",
  "version" : {
    "number" : "5.3.0",
    "build_hash" : "3adb13b",
    "build_date" : "2017-03-23T03:31:50.652Z",
    "build_snapshot" : false,
    "lucene_version" : "6.4.1"
  },
  "tagline" : "You Know, for Search"
}

访问地址查看状态:

curl -XGET 'http://localhost:9200/_cat?pretty'

查看集群信息:

curl -XGET 'http://localhost:9200/_cat/nodes?pretty'

查看索引信息:

curl 'localhost:9200/_cat/indices?v'  # 查看所有索引

# 创建一个名为“customer”的索引,然后再查看所有的索引
curl -XPUT 'localhost:9200/customer?pretty'
curl 'localhost:9200/_cat/indices?v'

# 查看某个索引
curl -XGET 'http://localhost:9200/logstash-2019.02.03/_search?pretty'

删除索引:

curl -XDELETE http://localhost:9200/customer

常用接口:

/_cat/allocation      #查看单节点的shard分配整体情况
/_cat/shards          #查看各shard的详细情况
/_cat/shards/{index}  #查看指定分片的详细情况
/_cat/master          #查看master节点信息
/_cat/nodes           #查看所有节点信息
/_cat/indices         #查看集群中所有index的详细信息
/_cat/indices/{index} #查看集群中指定index的详细信息
/_cat/segments        #查看各index的segment详细信息,包括segment名, 所属shard, 内存(磁盘)占用大小, 是否刷盘
/_cat/segments/{index}#查看指定index的segment详细信息
/_cat/count           #查看当前集群的doc数量
/_cat/count/{index}   #查看指定索引的doc数量
/_cat/recovery        #查看集群内每个shard的recovery过程.调整replica。
/_cat/recovery/{index}#查看指定索引shard的recovery过程
/_cat/health          #查看集群当前状态:红、黄、绿
/_cat/pending_tasks   #查看当前集群的pending task
/_cat/aliases         #查看集群中所有alias信息,路由配置等
/_cat/aliases/{alias} #查看指定索引的alias信息
/_cat/thread_pool     #查看集群各节点内部不同类型的threadpool的统计信息,
/_cat/plugins         #查看集群各个节点上的plugin信息
/_cat/fielddata       #查看当前集群各个节点的fielddata内存使用情况
/_cat/fielddata/{fields}     #查看指定field的内存使用情况,里面传field属性对应的值
/_cat/nodeattrs       #查看单节点的自定义属性
/_cat/repositories    #输出集群中注册快照存储库
/_cat/templates       #输出当前正在存在的模板信息

常用语句:

查看索引相关信息
curl -XGET kibana_sample_data_ecommerce

查看索引的文档总数
curl -XGET kibana_sample_data_ecommerce/_count

查看前10条文档,了解文档格式
curl -XPOST kibana_sample_data_ecommerce/_search
{
}

查看indices
GET /_cat/indices/kibanna*?v&s=index

查看状态为绿的索引
GET /_cat/indices?v&health=green

按照文档总数排序,按照索引大小排序
GET /_cat/indices?v&s=docs.count:desc

查看具体的字段
GET /_cat/indices/kibana*?pri&v&h=health,index,pri,rep,decs.count.mt

每个索引占用的内存
GET /_cat/indices?v&h=i,tm&s=tm:desc

磁盘使用
GET /_cat/allocation?v

查看副本和分片数:

# 方式一
GET /k8s-prd-2021.09.02/_settings
{
  "k8s-prd-2021.09.02": {
    "settings": {
      "index": {
        "creation_date": "1630540804949",
        "number_of_shards": "5", # 分片数
        "number_of_replicas": "1", # 副本数
        "uuid": "X5LslRAjQ_Obt6TnwlVWlA",
        "version": {
          "created": "6000099"
        },
        "provided_name": "k8s-prd-2021.09.02"
      }
    }
  }
}

# 方式二
GET /_cat/shards/k8s-prd-2021.09.02
k8s-prd-2021.09.02 2 r STARTED 3837260 1.4gb 10.1.55.106 node-3
k8s-prd-2021.09.02 2 p STARTED 3837260 1.4gb 10.1.55.73  node-1
k8s-prd-2021.09.02 4 p STARTED 3835226 1.4gb 10.1.55.106 node-3
k8s-prd-2021.09.02 4 r STARTED 3835226 1.4gb 10.1.55.98  node-2
k8s-prd-2021.09.02 3 r STARTED 3833982 1.4gb 10.1.55.73  node-1
k8s-prd-2021.09.02 3 p STARTED 3833982 1.4gb 10.1.55.98  node-2
k8s-prd-2021.09.02 1 p STARTED 3838132 1.4gb 10.1.55.106 node-3
k8s-prd-2021.09.02 1 r STARTED 3838132 1.4gb 10.1.55.98  node-2
k8s-prd-2021.09.02 0 r STARTED 3836117 1.4gb 10.1.55.73  node-1
k8s-prd-2021.09.02 0 p STARTED 3836117 1.4gb 10.1.55.98  node-2

保留7天数据:

* 0 * * * /usr/bin/curl -u username:password  -H'Content-Type:application/json' -d'{"query":{"range":{"@timestamp":{"lt":"now-7d","format":"epoch_millis"}}}}' -XPOST "http://127.0.0.1:9200/*-*/_delete_by_query?pretty"

查看某个索引使用通配符:

curl -XGET 'http://10.32.135.251:9200/_cat/indices?index=prod-applog-*' | sort -k 3

关闭索引自动平衡:通常使用在对单一节点进行重启操作之前的设置。

        transient 临时:这些设置在集群重启之前一直会生效。一旦整个集群重启,这些设置就被清除。

        persistent 永久:这些设置永久保存,除非再次被手动修改。是将修改持久化到文件中,重启之后也不影响。

GET _cluster/settings

PUT _cluster/settings
{
  "transient" : {
      "cluster.routing.allocation.enable" : "none"  # 关闭
  }
}

PUT _cluster/settings
{
  "transient" : {
      "cluster.routing.allocation.enable" : "all"  # 开启
  }
}