resolves https://github.com/elastic/kibana/issues/88367 Prior to this PR, the KQL node_builder code was using recursion to generate "and" & "or" expressions. Eg, `and(foo1=bar1, foo2=bar2, foo3=bar3)` would be generated as if was specified as `and(foo1=bar1, and(foo2=bar2, foo3=bar3))`. Calls to the builder with long lists of expressions would generate nested JSON as deep as the lists are long. This is problematic, as Elasticsearch is changing the default limit on nested bools to 20 levels, and alerting already generates nested bools greater than that limit. See: https://github.com/elastic/elasticsearch/issues/55303 This PR changes the generated shape of above, so that all the nodes are at the same level, instead of the previous "recursive" treatment. |
||
---|---|---|
.. | ||
scripts | ||
src | ||
jest.config.js | ||
package.json | ||
README.md | ||
tsconfig.json |
@kbn/es
A command line utility for running elasticsearch from source or archive.
Getting started
If running elasticsearch from source, elasticsearch needs to be cloned to a sibling directory of Kibana.
To run, go to the Kibana root and run node scripts/es --help
to get the latest command line options.
Examples
Run a snapshot install with a trial license
node scripts/es snapshot --license=trial
Run from source with a configured data directory
node scripts/es source --Epath.data=/home/me/es_data
API
run
Start a cluster
var es = require('@kbn/es');
es.run({
license: 'basic',
version: 7.0,
})
.catch(function (e) {
console.error(e);
process.exitCode = 1;
});
Options
options.license
Type: String
License type, one of: trial, basic, gold, platinum
options.version
Type: String
Desired elasticsearch version
options['source-path']
Type: String
Cloned location of elasticsearch repository, used when running from source
options['base-path']
Type: String
Location where snapshots are cached
Snapshot Pinning
Sometimes we need to pin snapshots for a specific version. We'd really like to get this automated, but until that is completed here are the steps to take to build, upload, and switch to pinned snapshots for a branch.
To use these steps you'll need to setup the google-cloud-sdk, which can be installed on macOS with brew cask install google-cloud-sdk
. Login with the CLI and you'll have access to the gsutil
to do efficient/parallel uploads to GCS from the command line.
-
Clone the elasticsearch repo somewhere
-
Checkout the branch you want to build
-
Run the following to delete old distributables
find distribution/archives -type f \( -name 'elasticsearch-*-*.tar.gz' -o -name 'elasticsearch-*-*.zip' \) -not -path *no-jdk* -exec rm {} \;
-
Build the new artifacts
./gradlew -p distribution/archives assemble --parallel
-
Copy new artifacts to your
~/Downloads/tmp-artifacts
rm -rf ~/Downloads/tmp-artifacts mkdir ~/Downloads/tmp-artifacts find distribution/archives -type f \( -name 'elasticsearch-*-*.tar.gz' -o -name 'elasticsearch-*-*.zip' \) -not -path *no-jdk* -exec cp {} ~/Downloads/tmp-artifacts \;
-
Calculate shasums of the uploads
cd ~/Downloads/tmp-artifacts find * -exec bash -c "shasum -a 512 {} > {}.sha512" \;
-
Check that the files in
~/Downloads/tmp-artifacts
look reasonable -
Upload the files to GCS
gsutil -m rsync . gs://kibana-ci-tmp-artifacts/
-
Once the artifacts are uploaded, modify
packages/kbn-es/src/custom_snapshots.js
in a PR to use a URL formatted like:// force use of manually created snapshots until ReindexPutMappings fix if (!process.env.KBN_ES_SNAPSHOT_URL && !process.argv.some(isVersionFlag)) { // return undefined; return 'https://storage.googleapis.com/kibana-ci-tmp-artifacts/{name}-{version}-{os}-x86_64.{ext}'; }
For 6.8, the format of the url should look like:
'https://storage.googleapis.com/kibana-ci-tmp-artifacts/{name}-{version}.{ext}';