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  #取消任务,取消并不会回滚

 

posted @ 2020-03-26 09:16  学霸王先森  阅读(217)  评论(0编辑  收藏  举报