创建索引
创建索引使用PUT请求,后面跟上索引名称就好了,由于7.x默认type为_doc,所以后面不必跟上type了。在PUT简单请求同时,可以加上JSON请求体,进行复杂创建。
创建索引user,可以通过参数setting设置分片和副本数,通过number_of_shards设置一共有3个分片,通过number_of_replicas给每个分片设置2个副本,默认不指定的话,这两个参数都是1。通过mappings规定文档各个Filed插入类型。
PUT /user
{
"settings": {
"index": {
"number_of_shards": 3,
"number_of_replicas": 2
}
},
"mappings": {
"properties": {
"name": {
"type": "text" },
"age": {
"type": "short"},
"city":{
"type": "keyword"}
}
}
}
删除索引
DELETE /user
查看索引
GET /user
也可以通过在索引后面加参数来查看某一具体参数
GET /user/_settings
GET /user/_mappings
GET /user/_aliases
修改索引部分设置
可以通过PUT请求修改部分索引的settings,例如,分片副本数量可以修改,但是分片数量不可以通过这种方式修改
PUT /user/_settings
{
"number_of_replicas": 3
}
创建好索引,来看下文档的增删改查,这是日常业务用的最多的地方。
插入文档
新增文档使用PUT、POST请求
PUT /<target>/_doc/<_id>
POST /<target>/_doc/
PUT /<target>/_create/<_id>
POST /<target>/_create/<_id>
target为索引名称,_doc为默认type。通过前两种请求可看出,id可以自行指定,也可以由ES自动生成。_create可以保证只有当文档不存在的时候进行插入,而_doc还可以用于文档更新。
POST /user/_doc/1
{
"name":"111",
"age":26,
"city":"bj"
}
更新文档
更新文档可以使用PUT或者POST请求关键字,全量更新
{
"name":"ee",
"age":3,
"city":"sh"
}
还可以通过_update命令局部更新,所谓局部更新,是讲请求体内不需要加入全部字段,只加入需要修改的字段就好,其他字段不变。全量更新会替换整个文档。
POST /user/_update/1
{
"doc":{
"age": 26
}
}
此外还可以通过脚本修改,例如将所有存在age字段的文档,其值改成5岁。
POST /user/_update_by_query
{
"script": {
"source": "ctx._source['age']=5"
},
"query": {
"bool": {
"must": [
{
"exists": {
"field": "age"
}
}
]
}
}
}
删除文档
删除文档可以使用DELEETE请求,删除指定id的文档,也可以使用_delete_by_query,删除指定条件下的文档。
DELETE /user/_doc/1
POST /user/_delete_by_query
{
"query": {
"match": {
"name": "ee"
}
}
}
根据id查询某文档
GET /user/_doc/1
查找某索引下的全部文档
GET /user/_search?pretty
pretty参数在浏览器中才会发挥作用,格式化返回json的。以上这条命令默认返回10条数据,想返回更多数据可以添加size字段。
GET /user/_search?pretty&size=20
批量操作
批量操作是指,一批命令同时执行(减少IO),这些命令不一定是同种类型。
使用_bulk命令可以进行文档的批量增删改。
POST _bulk
{
"update" : {
"_index" :