此文章不完整,后面用到会慢慢补上,针对es6.8版本的命令行操作指令,请确认版本再往下看
下面所有的_doc代替的类型,如果在创建索引时,那可以在put后加上?include_type_name=false
忽略类型,那么es创建的默认的类型就是_doc
put 新索引
{
"settings": {
"number_of_shards": 3, //主分片
"number_of_replicas": 1 //副本数
},
"mappings": {
"类型":{
"properties": {
"字段名": {
"type" : "类型"
},
"字段名": {
"type" : "类型"
}
}
}
}}
在7.0以后已经删除类型了,但是这是6.8还是有类型的,
但是这里也可以不设置,下面就是一个例子(但是实际上默认给你创建了 _doc 类型)
put 新索引? include_type_name=false
{
"mappings": {
"properties": {
"字段名": {
"type": "字段类型"
}
}
}
}
put 索引/类型/指定的id
{
"name": "名字",
"age": 22,
"date": 1603683862
}
post 索引/类型/
{
"name": "孔超",
"age": 22,
"date": 1603684892
}
put 索引/类型/id?op_type=create
{
"字段名" : "值",
"字段名" : "值"
}
另一种写法
put 索引/类型/id/_create
put 索引/类型/id?timeout=5m //超时时间为5分钟,
post 索引/类型/id/_update
{
"doc": {
"name": "sss",
"age": 33
}
}
PUT 索引/_mapping/_doc
{
"properties": {
"新字段名": {
"type": "字段类型"
}
}
}
如果多个索引都添加这个字段映射,直接可以在 put /索引1,索引2/_mapping/_doc
后面一致
通常无法更新现有的字段的映射,但是有例外
给的例子是下面这样的
PUT my_index
{
"mappings": {
"_doc": {
"properties": {
"name": {
"properties": {
"first": {
"type": "text"
}
}
},
"user_id": {
"type": "keyword"
}
}
}
}
}
PUT my_index/_mapping/_doc
{
"properties": {
"name": {
"properties": {
"last": {
"type": "text"
}
}
},
"user_id": {
"type": "keyword",
"ignore_above": 100
}
}
}
如果创建时不指定类型,那可以在put后加上?include_type_name=false
下面是官方文档,可以看看
创建索引不加类型
POST 索引/_update_by_query?conflicts=proceed
{
"script": {
"source": "脚本",
},
"query": {
"文档类型": {
"字段名": "字段值"
}
}
}
符合查询要求的都会执行脚本,有冲突也会执行下去
delete 索引/类型/id
设置删除此文档的超时时间
delete 索引/类型/id?timeout=5m
delete 索引
POST 索引/_delete_by_query
{
"query": {
"match": {
"字段名": "值"
}
}
}
这样在此索引下的只要有此字段名的值符合上面的要求的文档都会被删除
但是在执行操作时遇到冲突就会中止,不会回滚
如果想遇到冲突继续执行的话就在后面加上conflicts=proceed
,下面就是一个例子
POST twitter/_doc/_delete_by_query?conflicts=proceed
get 索引/_search
get 索引/类型/_search
get 索引/类型/id
head 索引名
get 索引/类型/id?_source_includes=a*&_source_excludes=字段名
另一种写法
get 索引/类型/id/_source=a*,字段名 //以逗号分隔
get 索引/类型/id/_source
如果查看是否有_source存在,则用
head索引/类型/id/_source
GET /_mget
{
"docs" : [
{
"_index" : "test",
"_type" : "_doc",
"_id" : "1"
},
{
"_index" : "test",
"_type" : "_doc",
"_id" : "2"
}
]
}
如果索引和类型相同,完全可以下面这样写
GET /test/_doc/_mget
{
"docs" : [
{
"_id" : "1"
},
{
"_id" : "2"
}
]
}
GET /test/_doc/_mget
{
"ids" : ["1", "2"] //都招的是id,直接用数组来表示
}
如果想返回的数组中每一个文档是全部的就这样处理,如果不是全部的,只是特定字段就加上
"_source" : ["field3", "field4"]
get /_mapping
get /_all/_mapping
get /_mapping/类型
get/_all/_mapping/类型
get 索引/_mapping/类型/field/字段名
get /索引1,索引2/_mapping/类型/field/字段名
get /_all/_mapping/类型/field/字段1,字段2
get /_all/_mapping/类型/field/* //*代表通配符,也可以是a*
get 索引/_mapping/类型/field/字段.字段 //这个表示的是字段还有子字段映射
例子
{
"mappings": {
"_doc": {
"properties": {
"id": { "type": "text" },
"title": { "type": "text"},
"abstract": { "type": "text"},
"author": {
"properties": {
"id": { "type": "text" },
"name": { "type": "text" }
}
}
}
}
}
}
GET 索引/_mapping/_doc/field/author.id
查询是否有此索引是否有此类型
Head 索引/_mapping/类型 //200代表存在,400不存在
put _template/模板名称
{
"index_patterns": ["te*", "bar*"], //匹配的索引名字,可以是多个索引前缀的模板
"order": 3, //代表此索引模板的等级,如果一个索引有多个符合要求的索引模板就会高的在低阶的基础上修改添加成一个新的虚拟的索引模板给新索引用
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1
},
"mappings": {
"_doc": {
"_source": {
"enabled": true //如果为false ,那你查询出来的所有数据都没有_source,聚合函数例外,默认true
},
"properties": {
"字段名": {
"type": "字段类型"
},
"字段名": {
"type": "字段类型"
},
"time": {
"type": "date",
"format": "EEE MMM dd HH:mm:ss Z yyyy"
}
}
}
}
}
get _template
get _template/模板名
get _template/模板名前缀 + *
get _template/模板名1,模板名2
head _template/模板名称
delete _template/模板名
删除重新建呗,当然你也可以用多索引模板的方法添加/覆盖,但是如果只是简单的尽量就用一个索引模板,多了反而麻烦,
首先创建一个 example* 的索引模板,再根据上面创建索引的方式创建一个 example_2010 索引,这样如果不设置字段,则字段就会和索引模板上的一致,如果在创建索引时加了字段,则字段会合并,取并集
如果是两个索引模板符合,根据order的大小,低的提供基础,高的在低的基础上进行添加/覆盖于特定对象/属性的映射,之后合并成一个虚拟的索引模板用于此索引的创建。
警告:如果具有相同order的多个匹配模板,将导致不确定的合并顺序