参考文档:https://es.xiaoleilu.com/010_Intro/00_README.html
一、索引操作
1、查看当前节点的所有的index
查看当前节点的所有的index [root@es1 ~]# curl -X GET 'http://10.87.6.2:9200/_cat/indices?v' health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open students Btx9nIaLQ1GnVqy5ncbipg 5 1 6 0 48kb 24kb
2、查看每个index下的type和filed的对应的数据类型
查看每个index下的type和filed的类型 [root@es1 ~]# curl 'http://10.87.6.2:9200/_mapping?pretty=true' { "students" : { "mappings" : { "class1" : { "properties" : { "passwd" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }, "username" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } } } } } } }
3、创建索引的操作
创建索引,返回true,意味着创建成功了 [root@es1 ~]# curl -X PUT 'http://10.87.6.2:9200/weather' {"acknowledged":true,"shards_acknowledged":true,"index":"weather"}[root@es1 ~]# 创建完成后,查看索引 [root@es1 ~]# curl -X GET 'http://10.87.6.2:9200/_cat/indices?v' health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open students Btx9nIaLQ1GnVqy5ncbipg 5 1 6 0 48kb 24kb green open weather VWnR2eM9RIG8A0MJgNWORw 5 1 0 0 1.5kb 690b
4、删除索引操作
删除索引,返回true,意味着删除成功 [root@es1 ~]# curl -X DELETE 'http://10.87.6.2:9200/weather' {"acknowledged":true}[root@es1 ~]# 删除完成后,查看索引 [root@es1 ~]# curl -X GET 'http://10.87.6.2:9200/_cat/indices?v' health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open students Btx9nIaLQ1GnVqy5ncbipg 5 1 6 0 48kb 24kb [root@es1 ~]#
二、文档操作
1、新增一个文档记录,指定索引为数字
[root@es1 ~]# curl -XPUT 'http://10.87.6.2:9200/students/class1/7?pretty' -d '{"usernmae":"baoliang","passwd":"44444444"}' -H "Content-Type: application/json" { "_index" : "students", "_type" : "class1", "_id" : "7", "_version" : 1, "result" : "created", "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "_seq_no" : 2, "_primary_term" : 1 } 查看新增的记录 [root@es1 ~]# curl -XGET 'http://10.87.6.2:9200/students/class1/7?pretty' { "_index" : "students", "_type" : "class1", "_id" : "7", "_version" : 1, "_seq_no" : 2, "_primary_term" : 1, "found" : true, "_source" : { "usernmae" : "baoliang", "passwd" : "44444444" } }
2、创建一个文档,指定索引为字符串
这里我们注意,这条文档的id为7,但是id不一定为7,为abc也是可以的 [root@es1 ~]# curl -XPUT 'http://10.87.6.2:9200/students/class1/abc?pretty' -d '{"usernmae":"wxz","passwd":"5555555555"}' -H "Content-Type: application/json" { "_index" : "students", "_type" : "class1", "_id" : "abc", "_version" : 1, "result" : "created", "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "_seq_no" : 1, "_primary_term" : 1 } [root@es1 ~]# curl -XGET 'http://10.87.6.2:9200/students/class1/abc?pretty' { "_index" : "students", "_type" : "class1", "_id" : "abc", "_version" : 1, "_seq_no" : 1, "_primary_term" : 1, "found" : true, "_source" : { "usernmae" : "wxz", "passwd" : "5555555555" } }
3、创建文档,不指定索引,由elasticsearch为我们指定索引,但是方法要采用XPOST方法,不能使用XPUT方法
这里还需要注意,上面都指定id了,我们有可以不指定id进行新增文档,但是不能XPUT的方法,要用XPOST方法 [root@es1 ~]# curl -XPOST 'http://10.87.6.2:9200/students/class1/' -d '{"usernmae":"wxz","passwd":"5555555555"}' -H "Content-Type: application/json" {"_index":"students","_type":"class1","_id":"2oUVBmkBGaSC379Rl48e","_version":1,"result":"created","_shards":{"total":2,"successful":2,"failed":0},"_seq_no":3,"_primary_term":1}[root@es1 ~]# 我们看到这次的id是随机生成的2oUVBmkBGaSC379Rl48e 通过这个随机的id我们查看我们的文档 [root@es1 ~]# curl -XGET 'http://10.87.6.2:9200/students/class1/2oUVBmkBGaSC379Rl48e?pretty' { "_index" : "students", "_type" : "class1", "_id" : "2oUVBmkBGaSC379Rl48e", "_version" : 1, "_seq_no" : 3, "_primary_term" : 1, "found" : true, "_source" : { "usernmae" : "wxz", "passwd" : "5555555555" } }
4、这里还需要注意一点
这里还需要注意,如果我们输入的index不存在,elasticsearch也不会报错,他会为我们新建一个索引,所以这里要非常的注意,index一定不能写错
5、查看文档的操作
查看某个文档的 [root@es1 ~]# curl -XGET 'http://10.87.6.2:9200/students/class1/2oUVBmkBGaSC379Rl48e?pretty=true' { "_index" : "students", "_type" : "class1", "_id" : "2oUVBmkBGaSC379Rl48e", "_version" : 1, "_seq_no" : 3, "_primary_term" : 1, "found" : true, "_source" : { "usernmae" : "wxz", "passwd" : "5555555555" } } 如果id输错了,就会查不到数据 [root@es1 ~]# curl -XGET 'http://10.87.6.2:9200/students/class1/2oUVBmkBGaSC379Rl48?pretty=true' { "_index" : "students", "_type" : "class1", "_id" : "2oUVBmkBGaSC379Rl48", "found" : false }
6、删除文档的操作
删除记录的方法,输入index,type,id就可以删除指定的文档 [root@es1 ~]# curl -XDELETE 'http://10.87.6.2:9200/students/class1/2oUVBmkBGaSC379Rl48e' {"_index":"students","_type":"class1","_id":"2oUVBmkBGaSC379Rl48e","_version":2,"result":"deleted","_shards":{"total":2,"successful":2,"failed":0},"_seq_no":4,"_primary_term":1}[root@es1 ~]# 删除成功后,我们在查看这个文档,就已经查不到了 [root@es1 ~]# curl -XGET 'http://10.87.6.2:9200/students/class1/2oUVBmkBGaSC379Rl48?pretty=true' { "_index" : "students", "_type" : "class1", "_id" : "2oUVBmkBGaSC379Rl48", "found" : false }
7、更新操作,采用_update方法
更新操作 [root@es1 ~]# curl -XPOST 'http://10.87.6.2:9200/students/class1/7/_update?pretty=true' -d '{"doc":{"passwd":"55555555"}}' -H "Content-Type: application/json" { "_index" : "students", "_type" : "class1", "_id" : "7", "_version" : 2, "result" : "updated", "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "_seq_no" : 5, "_primary_term" : 1 } 查看更新后的结果 [root@es1 ~]# curl -XGET 'http://10.87.6.2:9200/students/class1/7?pretty=true' { "_index" : "students", "_type" : "class1", "_id" : "7", "_version" : 2, "_seq_no" : 5, "_primary_term" : 1, "found" : true, "_source" : { "usernmae" : "baoliang", "passwd" : "55555555" } }
8、覆盖操作,采用XPUT方法,id输入已有的id,也就是我们要覆盖的文档的id
xput方法是覆盖,update方法更新,上面我们介绍了一下update方法,下面我们看下xput方法,我们看到新的数据只有一个字段了,username字段被覆盖掉了 [root@es1 ~]# curl -XPUT 'http://10.87.6.2:9200/students/class1/7?pretty=true' -d '{"passwd":"55555555"}' -H "Content-Type: application/json" { "_index" : "students", "_type" : "class1", "_id" : "7", "_version" : 3, "result" : "updated", "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "_seq_no" : 6, "_primary_term" : 1 } [root@es1 ~]# curl -XGET 'http://10.87.6.2:9200/students/class1/7?pretty=true' { "_index" : "students", "_type" : "class1", "_id" : "7", "_version" : 3, "_seq_no" : 6, "_primary_term" : 1, "found" : true, "_source" : { "passwd" : "55555555" } }
8、查询所有的数据
查询的所有的数据 [root@es1 ~]# curl -XGET 'http://10.87.6.2:9200/students/class1/_search?pretty=true' { "took" : 25, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 8, "max_score" : 1.0, "hits" : [ { "_index" : "students", "_type" : "class1", "_id" : "5", "_score" : 1.0, "_source" : { "username" : "zyb", "passwd" : "111111" } }, { "_index" : "students", "_type" : "class1", "_id" : "4", "_score" : 1.0, "_source" : { "username" : "chr", "passwd" : "111111" } }, { "_index" : "students", "_type" : "class1", "_id" : "6", "_score" : 1.0, "_source" : { "username" : "cyr", "passwd" : "abcdef" } }, { "_index" : "students", "_type" : "class1", "_id" : "1", "_score" : 1.0, "_source" : { "username" : "fxk", "passwd" : "111111" } }, { "_index" : "students", "_type" : "class1", "_id" : "7", "_score" : 1.0, "_source" : { "passwd" : "55555555" } }, { "_index" : "students", "_type" : "class1", "_id" : "3", "_score" : 1.0, "_source" : { "username" : "chy", "passwd" : "111111" } }, { "_index" : "students", "_type" : "class1", "_id" : "abc", "_score" : 1.0, "_source" : { "usernmae" : "wxz", "passwd" : "5555555555" } } ] } }
这里的
took是表示操作的耗时,单位是毫秒
timeout表示是否超时
hits表示命中的数目的详细信息
total表示命中的数目
2、搜索满足指定的条件的文档
搜索,查看username为chy的文档 [root@es1 ~]# curl -XGET 'http://10.87.6.2:9200/students/class1/_search' -d '{"query":{"match":{"username":"chy"}}}' -H "Content-Type: application/json"
搜索结果如下
{ "took" : 6, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 1, "max_score" : 0.2876821, "hits" : [ { "_index" : "students", "_type" : "class1", "_id" : "3", "_score" : 0.2876821, "_source" : { "username" : "chy", "passwd" : "111111" } } ] } }
3、搜索满足指定条件的文档,但是设置返回的条数,使用size参数,设置返回的条数为1,默认是返回10条
[root@es1 ~]# curl -XGET 'http://10.87.6.2:9200/students/class1/_search' -d '{"query":{"match":{"username":"chy"}},"size":1}' -H "Content-Type: application/json"
搜索结果
{ "took" : 4, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 1, "max_score" : 0.2876821, "hits" : [ { "_index" : "students", "_type" : "class1", "_id" : "3", "_score" : 0.2876821, "_source" : { "username" : "chy", "passwd" : "111111" } } ] } }
4、搜索满足多个条件的语句,多个条件为or的关系
[root@es3 elasticsearch]# curl -XGET 'http://10.87.6.3:9200/students/class1/_search' -d '{"query":{"match":{"username":"chy chr"}}}' -H "Content-Type: application/json"
搜索结果
{ "took" : 6, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 2, "max_score" : 0.9808292, "hits" : [ { "_index" : "students", "_type" : "class1", "_id" : "4", "_score" : 0.9808292, "_source" : { "username" : "chr", "passwd" : "111111" } }, { "_index" : "students", "_type" : "class1", "_id" : "3", "_score" : 0.2876821, "_source" : { "username" : "chy", "passwd" : "111111" } } ] } }
5、搜索满足多个条件的语句,多个条件为and的关系
[root@es3 elasticsearch]# curl -XGET 'http://10.87.6.3:9200/students/class1/_search?pretty' -d '{"query":{"bool":{"must":[{"match":{"username":"chr"}},{"match":{"passwd":22222}}]}}}' -H "Content-Type: application/json"
搜索结果
{ "took" : 5, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 0, "max_score" : null, "hits" : [ ] } }
6、更为复杂的查询,比如查询名称为smith,同时年龄大于30的人,这个时候就需要采用过滤器filter
{ "query" : { "filtered" : { "filter" : { "range" : { "age" : { "gt" : 30 } } }, "query" : { "match" : { "last_name" : "smith" } } } } }
7、全文搜索
{ "query" : { "match" : { "about" : "rock climbing" } } }
8、
至此,我们的elasticsearch的索引操作和文档操作的总结暂时就完成了!