我有弹性集群,其索引包含当前日期 - 例如:
example-idex-2016-07-26 --> exists
example-idex-2016-07-25 --> exists
example-idex-2016-07-24 --> doesn't exist (weekend)
...
是否可以跨多个索引进行查询,忽略那些不存在的索引。例如, WORKS :
return elastic.search({
index: [
"example-idex-2016-07-26",
"example-idex-2016-07-25"],
],
...
});
而会抛出404 :
return elastic.search({
index: [
"example-idex-2016-07-25",
"example-idex-2016-07-24"], //this doesn't exist
],
...
});
我希望第二个例子只返回25日文档。
答案 0 :(得分:4)
如果您使用像example-idex-2016-07-*
这样的通配符,则不需要关心这一点,ES会找出匹配的索引。
如果您真的想要枚举索引,可以在search
来电中指定ignoreUnavailable: true
:
return elastic.search({
index: [
"example-idex-2016-07-25",
"example-idex-2016-07-24"], //this doesn't exist
],
ignoreUnavailable: true,
...
});
或者,您也可以使用index aliases并仅查询该别名。创建新索引时,还要将该别名添加到索引中。这样做的好处是您的客户端代码不需要更改,并且始终只查询别名,即隐含所有具有该别名的索引。