文章目录
1 安装
# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.7.2.tar.gz
# tar -zxvf elasticsearch-6.7.2.tar.gz
# mkdir -p /Data/apps/elasticsearch
# mv elasticsearch-6.7.2/* /Data/apps/elasticsearch/
2 新建用户
ES启动的时候不能使用root用户,即普通用户启动,此时需要新创建一个用户,并为这个用户赋予访问ES目录的权限,在ES所在的目录下,为这个文件夹赋予权限
# useradd es
# passwd es
# chown es.es /Data/apps/elasticsearch -R
3 配置
1 /etc/sysctl.conf
elasticsearch用户拥有的内存权限太小,至少需要262144
vm.max_map_count=262144
执行命令,让配置生效
# sysctl -p
2 system_call_filter
因为Centos6不支持SecComp,而ES5.2.0默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。
vi /Data/apps/elasticsearch/config/elasticsearch.yml
# ----------------------------------- Memory -----------------------------------
#
# Lock the memory on startup:
#
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
#
2 修改Ip和端口
vi /Data/apps/elasticsearch/config/elasticsearch.yml
network.host: 10.1.20.101
http.port: 9200
4 启动
# su - es
# /Data/apps/elasticsearch
# -d后台启动
# ./bin/elasticsearch -d
5 查看
在浏览器中输入http://10.1.20.101:9200/
6 基本操作
6.1 查看基本信息
[dev@credis4.ops.test.bj1 ~]$ curl -X GET "10.1.20.101:9200"
{
"name" : "IfZi0P6",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "l5ead7cCTm2S8uxOe171mw",
"version" : {
"number" : "6.7.2",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "56c6e48",
"build_date" : "2019-04-29T09:05:50.290371Z",
"build_snapshot" : false,
"lucene_version" : "7.7.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
[dev@credis4.ops.test.bj1 ~]$
6.2 查看集群健康
[dev@credis4.ops.test.bj1 ~]$ curl -X GET "10.1.20.101:9200/_cat/health?v"
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1570780907 08:01:47 elasticsearch green 1 1 0 0 0 0 0 0 - 100.0%
[dev@credis4.ops.test.bj1 ~]$
我们可以看到,我们命名为“elasticsearch”的集群现在是green状态。
无论何时我们请求集群健康时,我们会得到green, yellow, 或者 red 这三种状态。
Green : everything is good(一切都很好)(所有功能正常)
Yellow : 所有数据都是可用的,但有些副本还没有分配(所有功能正常)
Red : 有些数据不可用(部分功能正常)
从上面的响应中我们可以看到,集群"elasticsearch"总共有1个节点,0个分片因为还没有数据。
6.3 查看集群的节点列表
可以看到集群中只有一个节点,它的名字是“IfZi0P6”
[dev@credis4.ops.test.bj1 ~]$ curl -X GET "10.1.20.101:9200/_cat/nodes?v"
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
10.1.20.101 21 95 1 0.03 0.02 0.00 mdi * IfZi0P6
[dev@credis4.ops.test.bj1 ~]$
6.4 索引操作
6.4.1 查看全部索引
[dev@credis4.ops.test.bj1 ~]$
`
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
[dev@credis4.ops.test.bj1 ~]$
上面的输出意味着:我们在集群中没有索引
6.4.2 创建索引
现在,我们创建一个名字叫“clevercode”的索引,然后查看索引。pretty的意思是响应(如果有的话)以JSON格式返回
[dev@credis4.ops.test.bj1 ~]$ curl -X PUT "10.1.20.101:9200/clevercode?pretty"
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "clevercode"
}
[dev@credis4.ops.test.bj1 ~]$
查看索引
[dev@credis4.ops.test.bj1 ~]$ curl -X GET "10.1.20.101:9200/_cat/indices?v"
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open clevercode nN4H3_YTQ3qnI9Td_LGQSQ 5 1 0 0 1.1kb 1.1kb
[dev@credis4.ops.test.bj1 ~]$
结果的第二行告诉我们,我们现在有叫"clevercode"的索引,并且他有5个主分片和1个副本(默认是1个副本),有0个文档。
可能你已经注意到这个"clevercode"索引的健康状态是yellow。回想一下我们之前的讨论,yellow意味着一些副本(尚未)被分配。
之所以会出现这种情况,是因为Elasticsearch默认情况下为这个索引创建了一个副本。由于目前我们只有一个节点在运行,所以直到稍后另一个节点加入集群时,才会分配一个副本(对于高可用性)。一旦该副本分配到第二个节点上,该索引的健康状态将变为green。
6.4.3 删除索引
删除clevercode索引
[dev@credis4.ops.test.bj1 ~]$ curl -X DELETE "10.1.20.101:9200/clevercode?pretty"
{
"acknowledged" : true
}
[dev@credis4.ops.test.bj1 ~]$
6.5 文档操作
6.5.1 添加文档
1 让我们put一些数据到我们的"clevercode"索引。put方式需要指定id。这里id=1。id为整型。“result” : "created"表示新创建文档。
[dev@credis4.ops.test.bj1 ~]$ curl -X PUT "10.1.20.101:9200/clevercode/_doc/1?pretty" -H 'Content-Type: application/json' -d'{"name": "CleverCode","address":"beijing"}'
{
"_index" : "clevercode",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
[dev@credis4.ops.test.bj1 ~]$
2 让我们put一些数据到我们的"clevercode"索引。put方式需要指定id。这里id=abcd,这里指定为字符串。
[dev@credis4.ops.test.bj1 ~]$ curl -X PUT "10.1.20.101:9200/clevercode/_doc/abcd?pretty" -H 'Content-Type: application/json' -d'{"name": "CleverCode2","address":"beijing"}'
{
"_index" : "clevercode",
"_type" : "_doc",
"_id" : "abcd",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
[dev@credis4.ops.test.bj1 ~]$
3 让我们post一些数据到我们的"clevercode"索引。post方式不需要指定id。
[dev@credis4.ops.test.bj1 ~]$ curl -X POST "10.1.20.101:9200/clevercode/_doc?pretty" -H 'Content-Type: application/json' -d'{"name": "CleverCode3","address":"beijing"}'
{
"_index" : "clevercode",
"_type" : "_doc",
"_id" : "C-zXvW0Bsm6kRVId5yjQ",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 1,
"_primary_term" : 1
}
[dev@credis4.ops.test.bj1 ~]$
4 查看索引信息,发现已经有4篇文档了。
[dev@credis4.ops.test.bj1 ~]$ curl -X GET "10.1.20.101:9200/_cat/indices?v"
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open clevercode Z17FxUrcSU2u9OzSkBZi3Q 5 1 4 0 16.7kb 16.7kb
[dev@credis4.ops.test.bj1 ~]$
5 php版本curl直接上传一个文件
<?php
function posturl($url,$data){
$data = json_encode($data);
$headerArray =array("Content-Type: application/json");
$curl = curl_init();
curl_setopt($curl<