执行环境在kibana中

索引的操作

创建索引库

语法

PUT /索引名称 {
	"settings": { 
		"属性名": "属性值"
	} 
}

kibana如何删除es的索引 kibana清空索引_kibana如何删除es的索引

settings:索引库设置,可以定义索引库的属性 比如分片数 副本数等,这里先不设置

判断索引是否存在
HEAD /索引名称

kibana如何删除es的索引 kibana清空索引_搜索引擎_02

查看索引

单个索引

GET /索引名称

kibana如何删除es的索引 kibana清空索引_搜索引擎_03


批量查看

GET /索引名称1,索引名称2

查看全部索引1

GET _all

kibana如何删除es的索引 kibana清空索引_analyzer_04


查看全部索引2

GET /_cat/indices?v

kibana如何删除es的索引 kibana清空索引_搜索引擎_05


green:索引的所有分片都正常分配。

yellow:至少有一个副本没有得到正确的分配。

red:至少有一个主分片没有得到正确的分配。

打开和关闭索引
POST /索引名称/_open
POST /索引名称/_close

kibana如何删除es的索引 kibana清空索引_搜索引擎_06

关闭之后就不能查询了

kibana如何删除es的索引 kibana清空索引_kibana如何删除es的索引_07

删除索引
DELETE /索引名称1,索引名称2,索引名称3...

映射操作

Elasticsearch7.x取消了索引type类型的设置,不允许指定类型,默认为_doc,但字段仍然是有的,我们需要设置字段的约束信息,叫做字段映射 (mapping)。

创建映射字段
PUT /索引库名/_mapping 
{
	"properties": { 
		"字段名": {
			"type": "类型", 
			"index": true, 
			"store": true, 
			"analyzer": "分词器"
		}
	}
}

字段名自己定义
属性包括:
type:类型,可以是text、long、short、date、integer、object等
index:是否索引,默认为true
store:是否存储,默认为false
analyzer:指定分词器
等等
官网查看:https://www.elastic.co/guide/en/elasticsearch/reference/7.3/mapping-params.html 示例:向worker_index设置字段映射

PUT /worker_index/_mapping/
{
  "properties": {
    "name": {
      "type": "text",
      "analyzer": "ik_max_word"
    },
    "job": {
      "type": "text",
      "analyzer": "ik_max_word"
    }
  }
}
查看映射字段
GET /索引名称/_mapping

kibana如何删除es的索引 kibana清空索引_analyzer_08

查看所有索引映射关系

GET _mapping
GET _all/_mapping
修改映射关系

修改映射只能增加字段,做其它更改只能删除索引 重新建立映射

PUT /索引库名/_mapping 
{
	"properties": { 
		"字段名": {
			"type": "类型", 
			"index": true, 
			"store": true, 
			"analyzer": "分词器"
		}
	}
}
索引和映射一起创建
put /索引库名称 
{
	"settings":{ 
		"索引库属性名":"索引库属性值"
    },
    "mappings":{
		"properties":{ 
			"字段名":{
				"映射属性名":"映射属性值"
			} 		
		}
	} 
}

kibana如何删除es的索引 kibana清空索引_搜索引擎_09

文档的操作

新增文档

指定id的新增文档

POST /索引名称/_doc/{id}
{
    "field":"value"
}

kibana如何删除es的索引 kibana清空索引_搜索引擎_10


不指定id的新增文档

POST /索引名称/_doc
{
    "field":"value"
}
查看单个文档
GET /索引名称/_doc/{id}

kibana如何删除es的索引 kibana清空索引_elasticsearch_11

查看所有文档
POST /索引名称/_search
{
  "query": {
    "match_all": {}
  }
}

kibana如何删除es的索引 kibana清空索引_字段_12

_source定制返回结果

让source只返回需要的结果

GET  /worker_index/_doc/1?_source=name

kibana如何删除es的索引 kibana清空索引_搜索引擎_13

更新文档
全部更新

只保留更新的字段,没有的字段就被删除了

PUT /索引名称/_doc/{id}
{
    "field":"value"
}

把刚才新增的请求方式POST改为PUT,就是修改了,不过修改必须指定id,id对应文档存在,则修改, id对应文档不存在,则新增

kibana如何删除es的索引 kibana清空索引_elasticsearch_14

查看一下,可以看到之前的job字段已经没有了

kibana如何删除es的索引 kibana清空索引_elasticsearch_15

局部更新

只是修改某个字段

POST /索引名/_update/{id} 
{
    "doc":{
        "field":"value"
	} 
}

kibana如何删除es的索引 kibana清空索引_搜索引擎_16


查看一下,可以看到之前的字段还在

kibana如何删除es的索引 kibana清空索引_kibana如何删除es的索引_17

带乐观锁的更新

创建文档

PUT /test_index/_doc/4
{
  "test_field": "test"
}

获取数据

GET /test_index/_doc/4 
#返回
{
  "_index" : "test_index",
  "_type" : "_doc",
  "_id" : "4",
  "_version" : 1,
  "_seq_no" : 0,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "test_field" : "test"
  }
}

更新

  1. 使用if_seq_no和 if_primary_term进行乐观锁控制
PUT /test_index/_doc/4?if_seq_no=0&if_primary_term=1
{
  "test_field": "changed"
}
  1. external version进行乐观锁并发控制
    这里version=2的版本号,要比上面get拿到的version的版本号大才能更新
PUT /test_index/_doc/4?version=2&version_type=external
{
  "test_field": "changed"
}
删除文档
根据id删除
DELETE /索引名/_doc/{id}
根据查询条件删除
POST /索引库名/_delete_by_query 
{
	"query": {
		"match": {
			"字段名": "搜索关键字" 
		}
	} 
}

示例

POST /lagou-company-index/_delete_by_query
{
	"query":{
		"match":{
			"name":"Jack" 
		}
	} 
}
删除所有文档
POST 索引名/_delete_by_query 
{
	"query": {
		"match_all": {}
	}
}