ElasticSeach(五、命令操作)
调用方式
es通过http+json方式调用
返回:创建成功
或者使用kibana的控制台也可以。
创建索引
PUT /test { "settings": { "number_of_shards": 3, "number_of_replicas": 2 }, "mappings": { "properties": { "username":{ "type": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_max_word" } } } }
settings配置分片和备份,number_of_shards分片数,number_of_replicas备份数
mappings映射,定义字段username,类型是text,集成IK分词器。
索引中新增/更新文档
id不存在新增,id存在更新
POST /test/_doc/3 { "username":"健康成都APP已经正式上线" }
查询
获取单个文档
GET /test/_doc/3
GET /test/_doc/3?stored_fields=tags,counter #获取特定的字段
根据ID获取多个文档
GET /test/_mget { "ids":[1,2] }
条件查询
POST /test/_search { "query": { "match": { "username": "成都是个好地方" } }, "highlight": { "pre_tags": ["<font color='red'>"], "post_tags": ["</font>"], "fields": { "username": {} } } }
删除索引
DELETE /test#删除单个索引 DELETE /test1,test2 #删除多个索引 DELETE /test* #通配符,删除twitter开头的索引 DELETE /_all #删除所有索引,慎用!
删除文档
根据ID删除:
DELETE /test/_doc/1
根据ID和版本删除:
DELETE /test/_doc/1?version=1
查询删除:
POST _delete_by_query { "query":{ "match": { "username": "你好,成都" } } }
查询删除耗时较长,且可能会产生冲突,比如删除的时候发生了更新操作:
POST _delete_by_query?conflicts=proceed { "query":{ "match": { "username": "你好,成都" } } }
使用conflicts=proceed参数,当有版本冲突时,不放弃删除操作,记录冲突的文档,继续删除其他查询出的文档
查看删除任务:
GET _tasks?detailed=true&actions=*/delete/byquery #查看查询删除的任务 GET /_tasks/taskId:1 #查看具体任务的状态 POST _tasks/task_id:1/_cancel #取消任务,取消并不会回滚