赞
踩
Linux 系统下操作 ElasticSearch 集群,有很多操作命令,现在将常用的命令分类总结如下。
ElasticSearch 集群可以包含多个索引(indices),每一个索引可以包含多个类型(types),每一个类型包含多个文档(documents),每个文档包含多个字段(Fields)。
在 ElasticSearch 6.x 版本中已经只允许一个索引下只有一个 type,声明多个 type 已经标记为过期,但是仍可以使用。7.0 之后的版本已完全移除 type 的概念。
如果将 ElasticSearch 和 MySQL 数据库类比的话,ES 的索引 index 相当于 MySQL 的数据库 database,type 相当于 table,document 相当于表的记录,field 相当于 column。
[estestuser@vm-10-20-42-19 ~]$ curl -u elastic http://localhost:9200/_cat/health?v
Enter host password for user 'elastic':
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1614674552 08:42:32 my-application green 3 3 4 2 0 0 0 0 - 100.0%
green 表明集群是健康状态。
[estestuser@vm-10-20-42-19 ~]$ curl -H "Content-Type: application/json" --user elastic -XPUT 'http://localhost:9200/_xpack/security/user/elastic/_password?pretty' -d '{"password":"new_password"}'
Enter host password for user 'elastic':
{ }
[estestuser@vm-10-20-42-19 eslogs]$ curl -u elastic http://localhost:9200 Enter host password for user 'elastic': { "name" : "node-2", "cluster_name" : "my-application", "cluster_uuid" : "l-kTWdoxRCuTIm6x8ekG7w", "version" : { "number" : "7.1.1", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "7a013de", "build_date" : "2019-05-23T14:04:00.380842Z", "build_snapshot" : false, "lucene_version" : "8.0.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
说明节点 2 是存活的。
[estestuser@vm-10-20-42-19 ~]$ curl -u elastic http://localhost:9200/_cat/indices?v
Enter host password for user 'elastic':
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open .security-7 7py8w_piQMqXbzlQuJgCSg 1 1 6 0 39.7kb 19.8kb
green open testmapping G4oOQ4HdRMW01useLwDW7w 1 1 0 0 566b 283b
说明共有 .security-7 和 testmapping 两个索引。
[estestuser@vm-10-20-42-19 ~]$ curl -H "Content-Type: application/json" -u elastic -XDELETE http://localhost:9200/testmapping
Enter host password for user 'elastic':
{"acknowledged":true}
[estestuser@vm-10-20-42-19 ~]$ curl -H "Content-Type: application/json" -u elastic -XPUT http://localhost:9200/testIndex
Enter host password for user 'elastic':
{"error":{"root_cause":[{"type":"invalid_index_name_exception","reason":"Invalid index name [testIndex], must be lowercase","index_uuid":"_na_","index":"testIndex"}],"type":"invalid_index_name_exception","reason":"Invalid index name [testIndex], must be lowercase","index_uuid":"_na_","index":"testIndex"},"status":400}
修改索引名为小写,创建索引语句如下,提示创建成功。
[estestuser@vm-10-20-42-19 ~]$ curl -H "Content-Type: application/json" -u elastic -XPUT http://localhost:9200/testindex
Enter host password for user 'elastic':
{"acknowledged":true,"shards_acknowledged":true,"index":"testindex"}
[estestuser@vm-10-20-42-19 ~]$ curl -XGET -u elastic http://localhost:9200/testindex/_mapping?pretty
Enter host password for user 'elastic':
{
"testindex" : {
"mappings" : { }
}
}
说明索引 testindex 目前没有任何 filed。
若查询一个不存在的索引(假定索引名为 testindex)结构,则会报错,如下所示。
[estestuser@vm-10-20-42-19 ~]$ curl -XGET -u elastic http://localhost:9200/testindex/_mapping?pretty Enter host password for user 'elastic': { "error" : { "root_cause" : [ { "type" : "index_not_found_exception", "reason" : "no such index [testindex]", "index_uuid" : "_na_", "resource.type" : "index_or_alias", "resource.id" : "testindex", "index" : "testindex" } ], "type" : "index_not_found_exception", "reason" : "no such index [testindex]", "index_uuid" : "_na_", "resource.type" : "index_or_alias", "resource.id" : "testindex", "index" : "testindex" }, "status" : 404 }
[estestuser@vm-10-20-42-19 ~]$ curl -H "Content-Type: application/json" -u elastic -XPUT 'http://localhost:9200/testindex/_mapping?pretty' -d '{"properties":{"mchnt_id" : {"type" : "keyword","index" : false},"mchnt_name" : {"type" : "text"}}}'
Enter host password for user 'elastic':
{
"acknowledged" : true
}
[estestuser@vm-10-20-42-19 ~]$ curl -H "Content-Type: application/json" -u elastic -XPOST 'http://localhost:9200/testindex/_mapping?pretty' -d '{"properties": {"amount":{"type":"integer"}}}'
Enter host password for user 'elastic':
{
"acknowledged" : true
}
[estestuser@vm-10-20-42-19 ~]$ curl -u elastic -H "Content-Type: application/json" -XPOST 'http://localhost:9200/testindex/_doc/1?pretty' -d '{"mchnt_id": "1","mchnt_name": "鹿角巷"}' Enter host password for user 'elastic': { "_index" : "testindex", "_type" : "_doc", "_id" : "1", "_version" : 1, "result" : "created", "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "_seq_no" : 0, "_primary_term" : 1 }
[estestuser@vm-10-20-42-9 ~]$ curl -u elastic -H "Content-Type: application/json" -XDELETE 'http://localhost:9200/testindex/_doc/3?pretty' Enter host password for user 'elastic': { "_index" : "testindex", "_type" : "_doc", "_id" : "3", "_version" : 2, "result" : "deleted", "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "_seq_no" : 3, "_primary_term" : 1 }
[estestuser@vm-10-20-42-19 ~]$ curl -s --user elastic -XGET 'http://localhost:9200/_cat/indices/testindex?v' | awk -F ' ' {'print $7'} | grep -v docs.count
Enter host password for user 'elastic':
0
[estestuser@vm-10-20-42-19 ~]$ curl -u elastic -XGET 'http://localhost:9200/testindex/_search?pretty=true' Enter host password for user 'elastic': { "took" : 533, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 3, "relation" : "eq" }, "max_score" : 1.0, "hits" : [ { "_index" : "testindex", "_type" : "_doc", "_id" : "1", "_score" : 1.0, "_source" : { "mchnt_id" : "1", "mchnt_name" : "鹿角巷" } }, { "_index" : "testindex", "_type" : "_doc", "_id" : "2", "_score" : 1.0, "_source" : { "mchnt_id" : "2", "mchnt_name" : "鹿角巷东方路" } }, { "_index" : "testindex", "_type" : "_doc", "_id" : "3", "_score" : 1.0, "_source" : { "mchnt_id" : "3", "mchnt_name" : "鹿角巷民雷路" } } ] } }
[estestuser@vm-10-20-42-19 ~]$ curl --user elastic -XGET 'http://localhost:9200/testindex/_search?pretty' -H 'Content-Type:application/json' -d '{"query":{"match_all":{}}}' Enter host password for user 'elastic': { "took" : 54, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 0, "relation" : "eq" }, "max_score" : null, "hits" : [ ] } }
上述结果为 0 条数据。
[estestuser@vm-10-20-42-19 ~]$ curl --user elastic -XGET 'http://localhost:9200/testindex/_search?pretty' -H 'Content-Type:application/json' -d '{"query":{"match_all":{}}}' Enter host password for user 'elastic': { "took" : 4, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 3, "relation" : "eq" }, "max_score" : 1.0, "hits" : [ { "_index" : "testindex", "_type" : "_doc", "_id" : "1", "_score" : 1.0, "_source" : { "mchnt_id" : "1", "mchnt_name" : "鹿角巷" } }, { "_index" : "testindex", "_type" : "_doc", "_id" : "2", "_score" : 1.0, "_source" : { "mchnt_id" : "2", "mchnt_name" : "鹿角巷东方路" } }, { "_index" : "testindex", "_type" : "_doc", "_id" : "3", "_score" : 1.0, "_source" : { "mchnt_id" : "3", "mchnt_name" : "鹿角巷民雷路" } } ] } }
插入几条数据后,再次搜索全部数据,发现有 3 条。
[estestuser@vm-10-20-42-19 ~]$ curl -H "Content-Type:application/json" -u elastic -XGET http://localhost:9200/testindex/_doc/20200634?pretty
Enter host password for user 'elastic':
{
"_index" : "testindex",
"_type" : "_doc",
"_id" : "20200634",
"_version" : 3,
"_seq_no" : 44704,
"_primary_term" : 1,
"found" : true,
"_source" : {
"mchnt_id" : "20200634",
"mchnt_name" : "85度C成都凯德店"
}
}
若 ElasticSearch 集群添加了用户安全认证功能,curl 命令中的 “-u elastic” 代表以 elastic 用户访问 ElasticSearch 集群,也可以修改为 “- -user elastic”,命令回车后需要输入密码。
若集群未添加用户安全认证,“-u elastic” 或 “- -user elastic” 可以缺省,回车后也无需输入密码。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。