I have elastic cluster where my indexes contain the current date - e.g:
example-idex-2016-07-26 --> exists
example-idex-2016-07-25 --> exists
example-idex-2016-07-24 --> doesn't exist (weekend)
...
Is it possible to query across multiple indexes, ignoring ones that don't exist. For example this WORKS:
return elastic.search({
index: [
"example-idex-2016-07-26",
"example-idex-2016-07-25"],
],
...
});
Whereas this throws back a 404:
return elastic.search({
index: [
"example-idex-2016-07-25",
"example-idex-2016-07-24"], //this doesn't exist
],
...
});
I would expect the second example to return documents from 25th only.
If you use a wildcard like example-idex-2016-07-*
you don't need to care about this and ES will figure out the matching indices.
If you really want to enumerate indices you can specify ignoreUnavailable: true
in your search
call:
return elastic.search({
index: [
"example-idex-2016-07-25",
"example-idex-2016-07-24"], //this doesn't exist
],
ignoreUnavailable: true,
...
});
Alternatively, you can also use index aliases and query only that alias. When creating a new index, you also add that alias to the index. The good thing about this is that your client code doesn't need to be changed and will always only query the alias, i.e. implicitly all indices having that alias.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With