创建索引
<!--索引命名必须小写,不能以下划线开头-->
<!--PUT /索引名称-->
PUT /es_db
#创建索引时可以设置分片数和副本数
PUT /es_db
{
"settings" : {
"number_of_shards" : 3,
"number_of_replicas" : 2
}
}
#修改索引配置
PUT /es_db/_settings
{
"index" : {
"number_of_shards" : 2,
"number_of_replicas" : 1
}
}
查询索引
<!--GET /索引名称-->
GET /es_db
#es_db是否存在
HEAD /es_db
删除索引
<!--ELETE /索引名称-->
DELETE /es_db
添加(索引)文档
<!--[PUT | POST] /索引名称/[_doc | _create ]/id-->
POST和PUT都能起到创建/更新的作用,PUT需要对一个具体的资源进行操作也就是要确定id才能进行更新/创建,而POST是可以针对整个资源集合进行操作的,如果不写id就由ES生成一个唯一id进行创建新文档,如果填了id那就针对这个id的文档进行创建/更新
修改文档
<!--[PUT | POST] /索引名称/_doc/id-->
#全量更新,整个json都会替换,如果文档存在,现有文档会被删除,新的文档会被索引
POST /索引名称/_update/id
#update不会删除原来的文档,而是实现真正的数据更新
<!--POST /索引名称/_doc/1?if_seq_no=version&if_primary_term=id-->
#当在高并发环境下使用乐观锁机制修改文档时,要带上当前文档的_seq_no和_primary_term进行更新
#如果版本号不对,会抛出版本冲突异常
查询文档
#根据id查询文档
GET /索引名称/_doc/id
#条件查询 _search
GET /索引名称/_doc/_search
删除文档
DELETE /索引名称/_doc/id
批量操作文档
<!--对文档进行批量写操作是通过_bulk的API来实现的
请求方式:POST
请求地址:_bulk
请求参数:通过_bulk操作文档,一般至少有两行参数(或偶数行参数)
第一行参数为指定操作的类型及操作的对象(index,type和id)
第二行参数才是操作的数据-->
{"actionName":{"_index":"indexName", "_type":"typeName","_id":"id"}}
{"field1":"value1", "field2":"value2"}
#actionName:表示操作类型,主要有create,index,delete和update
批量读取
#mget可以通过id,也可以可以指定不同的index
GET /es_db/_mget
#msearch可以通过字段查询来进行一个批量的查找
GET /es_db/_msearch