索引模板
{
//匹配索引的,数组的形式,证明可以多个
"index_patterns": ["laravel*"],
//基本设置
"settings": {
//主分片数
"number_of_shards": 1,
//备份数
"number_of_replicas": 0
},
//映射
"mappings": {
//这个其实就是es的type,在es6.*的版本中,一个index只能存储一种type(7的版本会删除type),所以写成_doc(文档),你可以自己随便定义,反正最终展现形式就是type
"_doc": {
"_source": {
//是否存储所有源数据,建议设置成true,如果只需要设置部分数据,可以在具体字段中使用store
"enabled": true
},
//只有满足设定条件的字段会映射成date类型,不过多个类型只会存在一种,也就是第一次插入的是yyyy-MM-dd这种格式,后面也就必须全是这种格式,所以建议这个设置一个就好
"dynamic_date_formats": ["yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd", "yyyy/MM/dd"],
//具体设置字段
"properties": {
//将created_at字段设置成date类型,注意设置对应的format。
"created_at": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss"
},
//将updated_at字段设置成date类型
"updated_at": {
"type": "date"
}
},
//动态模板设置,前面properties中默认只设置了两个字段,如果新添加没有设置的字段,es默认会自己完成映射,但是你需要自己来设置这些映射规则没救要使用动态模板.下面一整段的意思就是把字符串映射成自定义的规则
"dynamic_templates": [
{
"strings": {
//匹配本来es要映射成字符串的字段
"match_mapping_type": "string",
"mapping": {
//匹配的字段映射成text类型
"type": "text",
//使用ik_smart分词
"analyzer": "ik_smart",
"fields": {
"keyword": {
//同时映射keyword类型
"type": "keyword",
//忽略超过256字节的字段
"ignore_above": 256
}
}
}
}
}
]
}
}
}
如果更改了模板不能对已存在索引生效
创建索引
- 下面创建一个名字为 laravel_es 的模板,mappings 下
_doc
索引 type
image.png
插入文档
image.png修改文档
- POST
- 127.0.0.1:9200/laravel_es/_doc/1/_update
{
"doc": {
"company_name": "名称"
}
}
删除文档
- delete
- 127.0.0.1:9200/laravel_es/_doc/1
网友评论