我正在尝试解决以下问题的可能解决方案。在我当前的实现中,我依赖于所谓的过滤别名,在这里我可以为每个用户创建具有相同索引的视图,例如:
POST /aliases { "actions": "add": { "index": "events", "alias": "events_123", "filter": { "match": { "user_id": "123" } } } }
我所有的写/读api调用都使用别名而不是索引名。不幸的是,由于最近与由外部组件管理的每天索引模式的引入有关的更改,我不能再使用过滤的别名。是否有一种简单(或不太简单)的方法来提供我的user_id过滤器作为rest api调用的参数。例如,如果我有一个POST /events*/_search {...}
请求,是否可以添加一个过滤器而无需修改搜索查询本身?
答案 0 :(得分:1)
您可以继续使用过滤的别名-index
也可以包含通配符。不确定您的索引结构是什么样,但是类似的东西会起作用:
POST /aliases
{
"actions": {
"add": {
"index": "events*",
"alias": "events_123",
"filter": {
"match": {
"user_id": "123"
}
}
}
}
}
如果您随着时间的推移不断添加索引,则需要通过索引模板(documentation)应用别名-例如Beats的操作方式:
PUT _template/events
{
"index_patterns": ["events_*"],
"aliases": {
"events_123": {
"filter": {
"match": {
"user_id": "123"
}
}
}
}
}
PS:您可以有一个别名列表,但是为了简化起见,我只添加了一个。