Elasticsearch(三)---索引

索引文档的语法curl用法

CURL:

简单认为是可以在命令行下访问url的一个工具

curl是利用URL语法在命令行方式下工作的开源文件传输工具,使用curl可以简单实现常见的get/post请求。

curl  

 -X  指定http请求的方法

GET POST  PUT DELETE       restful

-d   指定要传输的数据

新增一条ID是10的用户信息

curl -XPOST http://localhost:8080/user/10   -d 报文体

查询ID是10的用户信息

curl -XGET http://localhost:8080/user/10

修改ID是10的用户信息

curl -XPUT http://localhost:8080/user/10  -d 报文体

删除ID是10的用户信息

curl -XDELETE http://localhost:8080/user/10

索引操作

创建索引blog,默认分片5个,每个分片一个副本分片

# curl -XPOST node3:9200/blog

索引名称不能包含大写字母

# curl -XPUT node3:9200/ABc?pretty
{
  "error" : {
    "root_cause" : [ {
      "type" : "invalid_index_name_exception",
      "reason" : "Invalid index name [ABc], must be lowercase",
      "index" : "ABc"
    } ],
    "type" : "invalid_index_name_exception",
    "reason" : "Invalid index name [ABc], must be lowercase",
    "index" : "ABc"
  },
  "status" : 400
}

不能创建同名索引

# curl -XPUT node3:9200/blog?pretty
{
  "error" : {
    "root_cause" : [ {
      "type" : "index_already_exists_exception",
      "reason" : "already exists",
      "index" : "blog"
    } ],
    "type" : "index_already_exists_exception",
    "reason" : "already exists",
    "index" : "blog"
  },
  "status" : 400
}

在创建索引的时候指定分片的个数以及副本的个数,分片的个数创建索引后不能修改。

# curl -XPOST node3:9200/blog -d '
{
"settings":{
"number_of_replicas":2,
"number_of_shards":3
}
} '

修改blog的副本个数

# curl -XPUT node3:9200/blog/_settings -d '{
"number_of_replicas":1
}'

读写限制:

  • blocks.read_only:true 设置当前索引只允许读不允许写或者更新
  • blocks.read:true 禁止对当前索引进行读操作

blocks.write:true 禁止对当前索引进行写操作

# curl -XPUT node3:9200/blog/_settings -d '{
"blocks.write":true
}'

已经禁止写入了:

# curl -XPOST node3:9200/blog/article/1?pretty -d '{
"title":"java 虚拟机"
}'
{
  "error" : {
    "root_cause" : [ {
      "type" : "cluster_block_exception",
      "reason" : "blocked by: [FORBIDDEN/8/index write (api)];"
    } ],
    "type" : "cluster_block_exception",
    "reason" : "blocked by: [FORBIDDEN/8/index write (api)];"
  },
  "status" : 403
}

恢复写的权限:

# curl -XPUT node3:9200/blog/_settings -d '{
"blocks.write":false
}'

写入数据成功:

# curl -XPUT node3:9200/blog/article/1?pretty -d '{
"title":"java 虚拟机"
}'
{
  "_index" : "blog",
  "_type" : "article",
  "_id" : "1",
  "_version" : 1,
  "_shards" : {
    "total" : 2,
    "successful" : 2,
    "failed" : 0
  },
  "created" : true
}

查看索引:

# curl node3:9200/blog/_settings?pretty
{
  "blog" : {
    "settings" : {
      "index" : {
        "creation_date" : "1569625739362",
        "number_of_shards" : "3",
        "number_of_replicas" : "1",
        "uuid" : "o4eS-bgoQN2U3u8dohF7zw",
        "version" : {
          "created" : "2020199"
        },
        "blocks" : {
          "write" : "false"
        }
      }
    }
  }
}

创建一个测试索引:

# curl -XPOST node3:9200/myblog?pretty
{
  "acknowledged" : true
}

同时查看多个索引的settings信息:

# curl node3:9200/blog,myblog/_settings?pretty
{
  "blog" : {
    "settings" : {
      "index" : {
        "creation_date" : "1569625739362",
        "number_of_shards" : "3",
        "number_of_replicas" : "1",
        "uuid" : "o4eS-bgoQN2U3u8dohF7zw",
        "version" : {
          "created" : "2020199"
        },
        "blocks" : {
          "write" : "false"
        }
      }
    }
  },
  "myblog" : {
    "settings" : {
      "index" : {
        "creation_date" : "1569626498025",
        "number_of_shards" : "5",
        "number_of_replicas" : "1",
        "uuid" : "EKfVkmbFTEWDR94KaCYb1w",
        "version" : {
          "created" : "2020199"
        }
      }
    }
  }
}

查看集群中所有索引的settings信息:

# curl node3:9200/_all/_settings?pretty
{
  "blog" : {
    "settings" : {
      "index" : {
        "creation_date" : "1569625739362",
        "number_of_shards" : "3",
        "number_of_replicas" : "1",
        "uuid" : "o4eS-bgoQN2U3u8dohF7zw",
        "version" : {
          "created" : "2020199"
        },
        "blocks" : {
          "write" : "false"
        }
      }
    }
  },
  "myblog" : {
    "settings" : {
      "index" : {
        "creation_date" : "1569626498025",
        "number_of_shards" : "5",
        "number_of_replicas" : "1",
        "uuid" : "EKfVkmbFTEWDR94KaCYb1w",
        "version" : {
          "created" : "2020199"
        }
      }
    }
  }
}

删除索引,注意备份数据

# curl -XDELETE node3:9200/myblog?pretty
{
  "acknowledged" : true
}

删除不存在的索引

# curl -XDELETE node3:9200/myblog?pretty
{
  "error" : {
    "root_cause" : [ {
      "type" : "index_not_found_exception",
      "reason" : "no such index",
      "resource.type" : "index_or_alias",
      "resource.id" : "myblog",
      "index" : "myblog"
    } ],
    "type" : "index_not_found_exception",
    "reason" : "no such index",
    "resource.type" : "index_or_alias",
    "resource.id" : "myblog",
    "index" : "myblog"
  },
  "status" : 404
}

索引的打开和关闭

ES索引关闭之后几乎不占用系统资源:关闭后索引就不能索引文档和检索文档了

# curl -XPOST node2:9200/blog/_close?pretty
{
  "acknowledged" : true
}

打开索引

# curl -XPOST node2:9200/blog/_open?pretty
{
  "acknowledged" : true
}

创建示例索引

# curl -XPOST node2:9200/myblog1?pretty
{
  "acknowledged" : true
}
# curl -XPOST node2:9200/myblog2?pretty
{
  "acknowledged" : true
}
# curl -XPOST node2:9200/myblog3?pretty
{
  "acknowledged" : true
}

同时关闭多个索引

# curl -XPOST node3:9200/myblog1,myblog2/_close?pretty
{
  "acknowledged" : true
}

同时打开多个索引:

# curl -XPOST node3:9200/myblog1,myblog2/_open?pretty
{
  "acknowledged" : true
}

如果ES集群中不存在开启或关闭请求中的全部索引会报异常:

# curl -XPOST node3:9200/myblog1,myblogx/_open?pretty
{
  "error" : {
    "root_cause" : [ {
      "type" : "index_not_found_exception",
      "reason" : "no such index",
      "resource.type" : "index_or_alias",
      "resource.id" : "myblogx",
      "index" : "myblogx"
    } ],
    "type" : "index_not_found_exception",
    "reason" : "no such index",
    "resource.type" : "index_or_alias",
    "resource.id" : "myblogx",
    "index" : "myblogx"
  },
  "status" : 404
}
# curl -XPOST node3:9200/myblog1,myblog2,myblog3/_close?pretty
{
  "acknowledged" : true
}

可以通过ignore_unavailable参数只操作存在的索引(反斜杠转义&符号)

# curl -XPOST node3:9200/myblog1,myblogx/_open?pretty\&ignore_unavailable=true
{
  "acknowledged" : true
}

关闭所有索引:

# curl -XPOST node3:9200/_all/_close?pretty
{
  "acknowledged" : true
}

打开my开头的索引:

# curl -XPOST node3:9200/my*/_open?pretty
{
  "acknowledged" : true
}

索引别名

就是给一个索引或者多个索引起的一个另一个名字。为名为test1的索引创建别名alias1,命令格式如下:

# curl -XPOST node3:9200/_aliases -d '{
"actions":[
{"add":{"index":"myblog1", "alias":"alias1"}}
]
}'
{"acknowledged":true}

移除别名:

# curl -XPOST node3:9200/_aliases -d '{
"actions":[
{"remove":{"index":"myblog1", "alias":"alias1"}}
]
}'
{"acknowledged":true}

同时给多个index取别名:

# curl -XPOST node3:9200/_aliases -d '{
"actions":[
{"add":{"index":"blog", "alias":"indexok"}},
{"add":{"index":"myblog1", "alias":"indexm"}}
]
}'
{"acknowledged":true}

简写形式:

# curl -XPOST node3:9200/_aliases -d '{
"actions":[
{"add":{"indices":["blog", "myblog1"], "alias":"alias2"}}
]
}'
{"acknowledged":true}

# curl -XPOST node3:9200/_aliases?pretty -d '{
> "actions":[
> {"remove":{"indices":["blog", "myblog1"], "alias":"alias1"}}
> ]
> }'
{
  "acknowledged" : true
}

增加别名和移除别名混合使用:

# curl -XPOST node3:9200/_aliases?pretty -d '{
"actions":[
{"remove":{"index":"blog", "alias":"alias2"}},
{"add":{"index":"myblog1", "alias":"alias3"}}
]
}'
{
  "acknowledged" : true
}

别名和索引是一对一的,使用别名索引文档或者根据ID查询文档是可以的,但是如果别名和索引是一对多,使用别名会发生错误,以为ES不知道把文档写入哪个索引中或者从哪个索引读取文档。

ES支持通过通配符同时给多个索引设置别名:

# curl -XPOST node3:9200/_aliases -d '{
> "actions":[
> {"add":{"index":"mybl*", "alias":"a1"}}
> ]
> }'
{"acknowledged":true}

查看别名信息:

# curl node3:9200/myblog1/_aliases?pretty
{
  "testblog1" : {
    "aliases" : {
      "a1" : { }
    }
  }
}

查看所有别名信息:

# curl node2:9200/_aliases?pretty
{
  "testblog3" : {
    "aliases" : {
      "a1" : { }
    }
  },
  "testblog2" : {
    "aliases" : {
      "a1" : { }
    }
  },
  "testblog1" : {
    "aliases" : {
      "a1" : { }
    }
  },
  "testok2" : {
    "aliases" : { }
  },
  "testok1" : {
    "aliases" : { }
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

30岁老阿姨

支持一下哦!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值