在 Mapping 里面,将 dynamic 参数设置成 strict 可以拒绝索引包含未知字段的文档。 此条 Tips 由 medcl 贡献。

es rollover机制是否无法自动创建索引

匿名 | 发布于2021年04月21日 | 阅读数:2340

PUT /_template/test_template
{
"index_patterns": ["test-*"],
"settings": {
"number_of_shards": 1,
"number_of_replicas": 0,
"refresh_interval": "1s"
},

"aliases":{
"test_search":{}
},
"mappings": {
"_doc": {
"dynamic": "strict",
"properties": {
"site": {
"type": "keyword"
}
}
}
}
}

PUT test-1

POST _aliases
{
"actions": [
{
"add": {
"index": "test-1",
"alias": "test-write-alias"
}
}
]
}

POST /test-write-alias/_rollover
{
"conditions": {
"max_docs": 1
}
}
 
 
执行到这步可以发现返回的是false,继续添加两条数据。
POST test-write-alias/_doc/1
{
"site" : "rt"
}

POST test-write-alias/_doc/2
{
"site" : "rt"
}
 
 
这时候发现没能再之前设置条件下,自动创建索引,只能继续添加rollover,然后满足条件了,创建新索引,以此类推步骤...
 
最终发现,好像真没办法自动去创建,有什么方案能让在满足rollover条件之后去自动创建索引,有个定时去设置rollover的方法,但感觉麻烦,有其他好的建议吗?
已邀请:

dadaball

赞同来自: Joekwal Memento

可以用 ILM 或 data stream 的方式來達到自動創建索引

Charele - Cisco4321

赞同来自: Joekwal

没有明白你的疑问在哪里,
当你执行
POST /test-write-alias/_rollover
{ "conditions": { "max_docs": 1 } } 的时候,索引里没有数据,不满足条件,
肯定返回false了,所以不会执行rollover,所以也不会生成新的索引了。
 
后来你加了数据,就可以了正确执行rollover,生成新索引了。
 
这没有问题啊,

要回复问题请先登录注册