Compare commits
49 Commits
v9.0.0-alp
...
v9.0.0-alp
| Author | SHA1 | Date | |
|---|---|---|---|
| dea4db1736 | |||
| d5bd34fc23 | |||
| b2a490718d | |||
| e8dc747c61 | |||
| c5f9625463 | |||
| a9a5aca736 | |||
| 64ef5359e7 | |||
| 1abb4e3c9f | |||
| d9e9906c4e | |||
| 1519963dd9 | |||
| 867ceda5a3 | |||
| 88270bf354 | |||
| 0f09faefbd | |||
| b775456296 | |||
| 9de4dc5009 | |||
| 461f9b7f66 | |||
| afc83338b0 | |||
| 85396ddc67 | |||
| 16b51c2315 | |||
| 3ed94d71e0 | |||
| e2eb6ef586 | |||
| 6836a3f1c7 | |||
| 0eaeb78c96 | |||
| c713e599d1 | |||
| 8ca68a4178 | |||
| 3e5e568c07 | |||
| ac231c859e | |||
| a22c4622d9 | |||
| 6f9e1062f3 | |||
| 7449adbd1f | |||
| d5a0f1171f | |||
| d86eb82e82 | |||
| a411cc7c7d | |||
| c99abab058 | |||
| c5b2915b5a | |||
| 20fb610d82 | |||
| c8504fe616 | |||
| 4795a8c0d5 | |||
| 9139662bcc | |||
| 9e4572f4e1 | |||
| a25bc97297 | |||
| 172180cb21 | |||
| 947e09e62a | |||
| 86169003b4 | |||
| 11ff146ae8 | |||
| d2c63b4c5f | |||
| 0ad42ff1a2 | |||
| 6dbf91a9c3 | |||
| 39b2700add |
@ -12,5 +12,3 @@ WORKDIR /usr/src/app
|
|||||||
|
|
||||||
COPY package.json .
|
COPY package.json .
|
||||||
RUN npm install
|
RUN npm install
|
||||||
|
|
||||||
COPY . .
|
|
||||||
|
|||||||
@ -25,6 +25,3 @@ USER ${BUILDER_UID}:${BUILDER_GID}
|
|||||||
# install dependencies
|
# install dependencies
|
||||||
COPY package.json .
|
COPY package.json .
|
||||||
RUN npm install
|
RUN npm install
|
||||||
|
|
||||||
# copy project files
|
|
||||||
COPY . .
|
|
||||||
|
|||||||
@ -1,20 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Licensed to Elasticsearch B.V. under one or more contributor
|
* Copyright Elasticsearch B.V. and contributors
|
||||||
* license agreements. See the NOTICE file distributed with
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
* this work for additional information regarding copyright
|
|
||||||
* ownership. Elasticsearch B.V. licenses this file to you under
|
|
||||||
* the Apache License, Version 2.0 (the "License"); you may
|
|
||||||
* not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing,
|
|
||||||
* software distributed under the License is distributed on an
|
|
||||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
||||||
* KIND, either express or implied. See the License for the
|
|
||||||
* specific language governing permissions and limitations
|
|
||||||
* under the License.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* global $ argv */
|
/* global $ argv */
|
||||||
@ -123,7 +109,7 @@ async function codegen (args) {
|
|||||||
await $`rm -rf ${join(import.meta.url, '..', 'src', 'api')}`
|
await $`rm -rf ${join(import.meta.url, '..', 'src', 'api')}`
|
||||||
await $`mkdir ${join(import.meta.url, '..', 'src', 'api')}`
|
await $`mkdir ${join(import.meta.url, '..', 'src', 'api')}`
|
||||||
await $`cp -R ${join(import.meta.url, '..', '..', 'elastic-client-generator-js', 'output')}/* ${join(import.meta.url, '..', 'src', 'api')}`
|
await $`cp -R ${join(import.meta.url, '..', '..', 'elastic-client-generator-js', 'output')}/* ${join(import.meta.url, '..', 'src', 'api')}`
|
||||||
await $`mv ${join(import.meta.url, '..', 'src', 'api', 'reference.asciidoc')} ${join(import.meta.url, '..', 'docs', 'reference.asciidoc')}`
|
await $`mv ${join(import.meta.url, '..', 'src', 'api', 'reference.md')} ${join(import.meta.url, '..', 'docs', 'reference', 'api-reference.md')}`
|
||||||
await $`npm run build`
|
await $`npm run build`
|
||||||
|
|
||||||
// run docs example generation
|
// run docs example generation
|
||||||
|
|||||||
19
.github/workflows/docs-build.yml
vendored
Normal file
19
.github/workflows/docs-build.yml
vendored
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
name: docs-build
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
pull_request_target: ~
|
||||||
|
merge_group: ~
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
docs-preview:
|
||||||
|
uses: elastic/docs-builder/.github/workflows/preview-build.yml@main
|
||||||
|
with:
|
||||||
|
path-pattern: docs/**
|
||||||
|
permissions:
|
||||||
|
deployments: write
|
||||||
|
id-token: write
|
||||||
|
contents: read
|
||||||
|
pull-requests: read
|
||||||
14
.github/workflows/docs-cleanup.yml
vendored
Normal file
14
.github/workflows/docs-cleanup.yml
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
name: docs-cleanup
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request_target:
|
||||||
|
types:
|
||||||
|
- closed
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
docs-preview:
|
||||||
|
uses: elastic/docs-builder/.github/workflows/preview-cleanup.yml@main
|
||||||
|
permissions:
|
||||||
|
contents: none
|
||||||
|
id-token: write
|
||||||
|
deployments: write
|
||||||
7
.github/workflows/nodejs.yml
vendored
7
.github/workflows/nodejs.yml
vendored
@ -41,7 +41,7 @@ jobs:
|
|||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Use Node.js ${{ matrix.node-version }}
|
- name: Use Node.js ${{ matrix.node-version }}
|
||||||
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4
|
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4
|
||||||
with:
|
with:
|
||||||
node-version: ${{ matrix.node-version }}
|
node-version: ${{ matrix.node-version }}
|
||||||
|
|
||||||
@ -71,7 +71,7 @@ jobs:
|
|||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Use Node.js
|
- name: Use Node.js
|
||||||
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4
|
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4
|
||||||
with:
|
with:
|
||||||
node-version: 22.x
|
node-version: 22.x
|
||||||
|
|
||||||
@ -83,6 +83,9 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
npm run license-checker
|
npm run license-checker
|
||||||
|
|
||||||
|
- name: SPDX header check
|
||||||
|
run: npm run license-header
|
||||||
|
|
||||||
test-bun:
|
test-bun:
|
||||||
name: Test Bun
|
name: Test Bun
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
|
|||||||
37
.github/workflows/npm-publish.yml
vendored
37
.github/workflows/npm-publish.yml
vendored
@ -16,26 +16,45 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
ref: ${{ github.event.inputs.branch }}
|
ref: ${{ github.event.inputs.branch }}
|
||||||
- uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4
|
- uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4
|
||||||
with:
|
with:
|
||||||
node-version: "22.x"
|
node-version: "22.x"
|
||||||
registry-url: "https://registry.npmjs.org"
|
registry-url: "https://registry.npmjs.org"
|
||||||
- run: npm install -g npm
|
- run: npm install -g npm
|
||||||
- run: npm install
|
- run: npm install
|
||||||
- run: npm test
|
- run: npm test
|
||||||
- run: npm publish --provenance --access public --tag alpha
|
- name: npm publish
|
||||||
|
run: |
|
||||||
|
version=$(jq -r .version package.json)
|
||||||
|
tag_meta=$(echo "$version" | cut -s -d '-' -f2)
|
||||||
|
if [[ -z "$tag_meta" ]]; then
|
||||||
|
npm publish --provenance --access public
|
||||||
|
else
|
||||||
|
tag=$(echo "$tag_meta" | cut -d '.' -f1)
|
||||||
|
npm publish --provenance --access public --tag "$tag"
|
||||||
|
fi
|
||||||
env:
|
env:
|
||||||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
- name: Publish version on GitHub
|
- name: Publish version on GitHub
|
||||||
run: |
|
run: |
|
||||||
version=$(jq -r .version package.json)
|
version=$(jq -r .version package.json)
|
||||||
gh release create \
|
tag_meta=$(echo "$version" | cut -s -d '-' -f2)
|
||||||
-n "This is a 9.0.0 pre-release alpha. Changes may not be stable." \
|
if [[ -z "$tag_meta" ]]; then
|
||||||
--latest=false \
|
gh release create \
|
||||||
--prerelease \
|
-n "[Changelog](https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/$BRANCH_NAME/changelog-client.html)"
|
||||||
--target "$BRANCH_NAME" \
|
--target "$BRANCH_NAME" \
|
||||||
--title "v$version" \
|
--title "v$version" \
|
||||||
"v$version"
|
"v$version"
|
||||||
|
else
|
||||||
|
tag_main=$(echo "$version" | cut -d '-' -f1)
|
||||||
|
gh release create \
|
||||||
|
-n "This is a $tag_main pre-release. Changes may not be stable." \
|
||||||
|
--latest=false \
|
||||||
|
--prerelease \
|
||||||
|
--target "$BRANCH_NAME" \
|
||||||
|
--title "v$version" \
|
||||||
|
"v$version"
|
||||||
|
fi
|
||||||
env:
|
env:
|
||||||
BRANCH_NAME: ${{ github.event.inputs.branch }}
|
BRANCH_NAME: ${{ github.event.inputs.branch }}
|
||||||
GH_TOKEN: ${{ github.token }}
|
GH_TOKEN: ${{ github.token }}
|
||||||
|
|||||||
43
.github/workflows/serverless-patch.sh
vendored
43
.github/workflows/serverless-patch.sh
vendored
@ -1,43 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -exuo pipefail
|
|
||||||
|
|
||||||
merge_commit_sha=$(jq -r '.pull_request.merge_commit_sha' "$GITHUB_EVENT_PATH")
|
|
||||||
pull_request_id=$(jq -r '.pull_request.number' "$GITHUB_EVENT_PATH")
|
|
||||||
pr_shortcode="elastic/elasticsearch-js#$pull_request_id"
|
|
||||||
|
|
||||||
# generate patch file
|
|
||||||
cd "$GITHUB_WORKSPACE/stack"
|
|
||||||
git format-patch -1 --stdout "$merge_commit_sha" > /tmp/patch.diff
|
|
||||||
|
|
||||||
# set committer info
|
|
||||||
git config --global user.email "elasticmachine@users.noreply.github.com"
|
|
||||||
git config --global user.name "Elastic Machine"
|
|
||||||
|
|
||||||
# apply patch file
|
|
||||||
cd "$GITHUB_WORKSPACE/serverless"
|
|
||||||
git am -C1 --reject /tmp/patch.diff || git am --quit
|
|
||||||
|
|
||||||
# generate PR body comment
|
|
||||||
comment="Patch applied from $pr_shortcode"
|
|
||||||
|
|
||||||
# enumerate rejected patches in PR comment
|
|
||||||
has_rejects='false'
|
|
||||||
for f in ./**/*.rej; do
|
|
||||||
has_rejects='true'
|
|
||||||
comment="$comment
|
|
||||||
|
|
||||||
## Rejected patch \`$f\` must be resolved:
|
|
||||||
|
|
||||||
\`\`\`diff
|
|
||||||
$(cat "$f")
|
|
||||||
\`\`\`
|
|
||||||
"
|
|
||||||
done
|
|
||||||
|
|
||||||
# delete .rej files
|
|
||||||
rm -fv ./**/*.rej
|
|
||||||
|
|
||||||
# send data to output parameters
|
|
||||||
echo "$comment" > /tmp/pr_body
|
|
||||||
echo "PR_DRAFT=$has_rejects" >> "$GITHUB_OUTPUT"
|
|
||||||
53
.github/workflows/serverless-patch.yml
vendored
53
.github/workflows/serverless-patch.yml
vendored
@ -1,53 +0,0 @@
|
|||||||
---
|
|
||||||
name: Apply PR changes to serverless
|
|
||||||
on:
|
|
||||||
pull_request_target:
|
|
||||||
types:
|
|
||||||
- closed
|
|
||||||
- labeled
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
apply-patch:
|
|
||||||
name: Apply patch
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
# Only react to merged PRs for security reasons.
|
|
||||||
# See https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target.
|
|
||||||
if: >
|
|
||||||
github.event.pull_request.merged
|
|
||||||
&& (
|
|
||||||
(
|
|
||||||
github.event.action == 'closed'
|
|
||||||
&& contains(github.event.pull_request.labels.*.name, 'apply-to-serverless')
|
|
||||||
)
|
|
||||||
||
|
|
||||||
(
|
|
||||||
github.event.action == 'labeled'
|
|
||||||
&& github.event.label.name == 'apply-to-serverless'
|
|
||||||
)
|
|
||||||
)
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
repository: elastic/elasticsearch-js
|
|
||||||
ref: main
|
|
||||||
path: stack
|
|
||||||
fetch-depth: 0
|
|
||||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
repository: elastic/elasticsearch-serverless-js
|
|
||||||
ref: main
|
|
||||||
path: serverless
|
|
||||||
- name: Apply patch from stack to serverless
|
|
||||||
id: apply-patch
|
|
||||||
run: $GITHUB_WORKSPACE/stack/.github/workflows/serverless-patch.sh
|
|
||||||
- uses: peter-evans/create-pull-request@67ccf781d68cd99b580ae25a5c18a1cc84ffff1f # v7
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.GH_TOKEN }}
|
|
||||||
path: serverless
|
|
||||||
title: "Apply patch from elastic/elasticsearch-js#${{ github.event.pull_request.number }}"
|
|
||||||
commit-message: "Apply patch from elastic/elasticsearch-js#${{ github.event.pull_request.number }}"
|
|
||||||
body-path: /tmp/pr_body
|
|
||||||
draft: "${{ steps.apply-patch.outputs.PR_DRAFT }}"
|
|
||||||
add-paths: ":!*.rej"
|
|
||||||
@ -28,6 +28,9 @@ spec:
|
|||||||
spec:
|
spec:
|
||||||
repository: elastic/elasticsearch-js
|
repository: elastic/elasticsearch-js
|
||||||
pipeline_file: .buildkite/pipeline.yml
|
pipeline_file: .buildkite/pipeline.yml
|
||||||
|
env:
|
||||||
|
ELASTIC_SLACK_NOTIFICATIONS_ENABLED: "true"
|
||||||
|
SLACK_NOTIFICATIONS_CHANNEL: "#devtools-notify-javascript"
|
||||||
teams:
|
teams:
|
||||||
devtools-team:
|
devtools-team:
|
||||||
access_level: MANAGE_BUILD_AND_READ
|
access_level: MANAGE_BUILD_AND_READ
|
||||||
@ -45,6 +48,9 @@ spec:
|
|||||||
8_x:
|
8_x:
|
||||||
branch: "8.x"
|
branch: "8.x"
|
||||||
cronline: "@daily"
|
cronline: "@daily"
|
||||||
8_14:
|
8_17:
|
||||||
branch: "8.16"
|
branch: "8.17"
|
||||||
|
cronline: "@daily"
|
||||||
|
8_18:
|
||||||
|
branch: "8.18"
|
||||||
cronline: "@daily"
|
cronline: "@daily"
|
||||||
|
|||||||
@ -1,270 +0,0 @@
|
|||||||
[[basic-config]]
|
|
||||||
=== Basic configuration
|
|
||||||
|
|
||||||
This page shows you the possible basic configuration options that the clients
|
|
||||||
offers.
|
|
||||||
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
const { Client } = require('@elastic/elasticsearch')
|
|
||||||
|
|
||||||
const client = new Client({
|
|
||||||
cloud: { id: '<cloud-id>' },
|
|
||||||
auth: { apiKey: 'base64EncodedKey' },
|
|
||||||
maxRetries: 5,
|
|
||||||
requestTimeout: 60000,
|
|
||||||
sniffOnStart: true
|
|
||||||
})
|
|
||||||
----
|
|
||||||
|
|
||||||
|
|
||||||
[cols=2*]
|
|
||||||
|===
|
|
||||||
|`node` or `nodes`
|
|
||||||
a|The Elasticsearch endpoint to use. +
|
|
||||||
It can be a single string or an array of strings:
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
node: 'http://localhost:9200'
|
|
||||||
----
|
|
||||||
Or it can be an object (or an array of objects) that represents the node:
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
node: {
|
|
||||||
url: new URL('http://localhost:9200'),
|
|
||||||
tls: 'tls options',
|
|
||||||
agent: 'http agent options',
|
|
||||||
id: 'custom node id',
|
|
||||||
headers: { 'custom': 'headers' }
|
|
||||||
roles: {
|
|
||||||
master: true,
|
|
||||||
data: true,
|
|
||||||
ingest: true,
|
|
||||||
ml: false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
|`auth`
|
|
||||||
a|Your authentication data. You can use both basic authentication and
|
|
||||||
{ref}/security-api-create-api-key.html[ApiKey]. +
|
|
||||||
See <<authentication,Authentication>> for more details. +
|
|
||||||
_Default:_ `null`
|
|
||||||
|
|
||||||
Basic authentication:
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
auth: {
|
|
||||||
username: 'elastic',
|
|
||||||
password: 'changeme'
|
|
||||||
}
|
|
||||||
----
|
|
||||||
{ref}/security-api-create-api-key.html[ApiKey] authentication:
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
auth: {
|
|
||||||
apiKey: 'base64EncodedKey'
|
|
||||||
}
|
|
||||||
----
|
|
||||||
Bearer authentication, useful for https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-create-service-token.html[service account tokens]. Be aware that it does not handle automatic token refresh:
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
auth: {
|
|
||||||
bearer: 'token'
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
|
|
||||||
|`maxRetries`
|
|
||||||
|`number` - Max number of retries for each request. +
|
|
||||||
_Default:_ `3`
|
|
||||||
|
|
||||||
|`requestTimeout`
|
|
||||||
|`number` - Max request timeout in milliseconds for each request. +
|
|
||||||
_Default:_ `30000`
|
|
||||||
|
|
||||||
|`pingTimeout`
|
|
||||||
|`number` - Max ping request timeout in milliseconds for each request. +
|
|
||||||
_Default:_ `3000`
|
|
||||||
|
|
||||||
|`sniffInterval`
|
|
||||||
|`number, boolean` - Perform a sniff operation every `n` milliseconds. Sniffing might not be the best solution for you, take a look https://www.elastic.co/blog/elasticsearch-sniffing-best-practices-what-when-why-how[here] to know more. +
|
|
||||||
_Default:_ `false`
|
|
||||||
|
|
||||||
|`sniffOnStart`
|
|
||||||
|`boolean` - Perform a sniff once the client is started. Sniffing might not be the best solution for you, take a look https://www.elastic.co/blog/elasticsearch-sniffing-best-practices-what-when-why-how[here] to know more. +
|
|
||||||
_Default:_ `false`
|
|
||||||
|
|
||||||
|`sniffEndpoint`
|
|
||||||
|`string` - Endpoint to ping during a sniff. +
|
|
||||||
_Default:_ `'_nodes/_all/http'`
|
|
||||||
|
|
||||||
|`sniffOnConnectionFault`
|
|
||||||
|`boolean` - Perform a sniff on connection fault. Sniffing might not be the best solution for you, take a look https://www.elastic.co/blog/elasticsearch-sniffing-best-practices-what-when-why-how[here] to know more. +
|
|
||||||
_Default:_ `false`
|
|
||||||
|
|
||||||
|`resurrectStrategy`
|
|
||||||
|`string` - Configure the node resurrection strategy. +
|
|
||||||
_Options:_ `'ping'`, `'optimistic'`, `'none'` +
|
|
||||||
_Default:_ `'ping'`
|
|
||||||
|
|
||||||
|`suggestCompression`
|
|
||||||
|`boolean` - Adds `accept-encoding` header to every request. +
|
|
||||||
_Default:_ `false`
|
|
||||||
|
|
||||||
|`compression`
|
|
||||||
|`string, boolean` - Enables gzip request body compression. +
|
|
||||||
_Options:_ `'gzip'`, `false` +
|
|
||||||
_Default:_ `false`
|
|
||||||
|
|
||||||
|`tls`
|
|
||||||
|`http.SecureContextOptions` - tls https://nodejs.org/api/tls.html[configuraton]. +
|
|
||||||
_Default:_ `null`
|
|
||||||
|
|
||||||
|`proxy`
|
|
||||||
a|`string, URL` - If you are using an http(s) proxy, you can put its url here.
|
|
||||||
The client will automatically handle the connection to it. +
|
|
||||||
_Default:_ `null`
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
const client = new Client({
|
|
||||||
node: 'http://localhost:9200',
|
|
||||||
proxy: 'http://localhost:8080'
|
|
||||||
})
|
|
||||||
|
|
||||||
// Proxy with basic authentication
|
|
||||||
const client = new Client({
|
|
||||||
node: 'http://localhost:9200',
|
|
||||||
proxy: 'http://user:pwd@localhost:8080'
|
|
||||||
})
|
|
||||||
----
|
|
||||||
|
|
||||||
|`agent`
|
|
||||||
a|`http.AgentOptions, function` - http agent https://nodejs.org/api/http.html#http_new_agent_options[options],
|
|
||||||
or a function that returns an actual http agent instance. If you want to disable the http agent use entirely
|
|
||||||
(and disable the `keep-alive` feature), set the agent to `false`. +
|
|
||||||
_Default:_ `null`
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
const client = new Client({
|
|
||||||
node: 'http://localhost:9200',
|
|
||||||
agent: { agent: 'options' }
|
|
||||||
})
|
|
||||||
|
|
||||||
const client = new Client({
|
|
||||||
node: 'http://localhost:9200',
|
|
||||||
// the function takes as parameter the option
|
|
||||||
// object passed to the Connection constructor
|
|
||||||
agent: (opts) => new CustomAgent()
|
|
||||||
})
|
|
||||||
|
|
||||||
const client = new Client({
|
|
||||||
node: 'http://localhost:9200',
|
|
||||||
// Disable agent and keep-alive
|
|
||||||
agent: false
|
|
||||||
})
|
|
||||||
----
|
|
||||||
|
|
||||||
|`nodeFilter`
|
|
||||||
a|`function` - Filters which node not to use for a request. +
|
|
||||||
_Default:_
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
function defaultNodeFilter (node) {
|
|
||||||
// avoid master only nodes
|
|
||||||
if (node.roles.master === true &&
|
|
||||||
node.roles.data === false &&
|
|
||||||
node.roles.ingest === false) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
|`nodeSelector`
|
|
||||||
a|`function` - custom selection strategy. +
|
|
||||||
_Options:_ `'round-robin'`, `'random'`, custom function +
|
|
||||||
_Default:_ `'round-robin'` +
|
|
||||||
_Custom function example:_
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
function nodeSelector (connections) {
|
|
||||||
const index = calculateIndex()
|
|
||||||
return connections[index]
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
|`generateRequestId`
|
|
||||||
a|`function` - function to generate the request id for every request, it takes
|
|
||||||
two parameters, the request parameters and options. +
|
|
||||||
By default it generates an incremental integer for every request. +
|
|
||||||
_Custom function example:_
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
function generateRequestId (params, options) {
|
|
||||||
// your id generation logic
|
|
||||||
// must be syncronous
|
|
||||||
return 'id'
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
|`name`
|
|
||||||
|`string, symbol` - The name to identify the client instance in the events. +
|
|
||||||
_Default:_ `elasticsearch-js`
|
|
||||||
|
|
||||||
|`opaqueIdPrefix`
|
|
||||||
|`string` - A string that will be use to prefix any `X-Opaque-Id` header. +
|
|
||||||
See https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/observability.html#_x-opaque-id_support[`X-Opaque-Id` support] for more details. +
|
|
||||||
_Default:_ `null`
|
|
||||||
|
|
||||||
|`headers`
|
|
||||||
|`object` - A set of custom headers to send in every request. +
|
|
||||||
_Default:_ `{}`
|
|
||||||
|
|
||||||
|`context`
|
|
||||||
|`object` - A custom object that you can use for observability in your events.
|
|
||||||
It will be merged with the API level context option. +
|
|
||||||
_Default:_ `null`
|
|
||||||
|
|
||||||
|`enableMetaHeader`
|
|
||||||
|`boolean` - If true, adds an header named `'x-elastic-client-meta'`, containing some minimal telemetry data,
|
|
||||||
such as the client and platform version. +
|
|
||||||
_Default:_ `true`
|
|
||||||
|
|
||||||
|`cloud`
|
|
||||||
a|`object` - Custom configuration for connecting to
|
|
||||||
https://cloud.elastic.co[Elastic Cloud]. See https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/auth-reference.html[Authentication]
|
|
||||||
for more details. +
|
|
||||||
_Default:_ `null` +
|
|
||||||
_Cloud configuration example:_
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
const client = new Client({
|
|
||||||
cloud: {
|
|
||||||
id: '<cloud-id>'
|
|
||||||
},
|
|
||||||
auth: {
|
|
||||||
username: 'elastic',
|
|
||||||
password: 'changeme'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
----
|
|
||||||
|
|
||||||
|`disablePrototypePoisoningProtection`
|
|
||||||
|`boolean`, `'proto'`, `'constructor'` - The client can protect you against prototype poisoning attacks. Read https://web.archive.org/web/20200319091159/https://hueniverse.com/square-brackets-are-the-enemy-ff5b9fd8a3e8?gi=184a27ee2a08[this article] to learn more about this security concern. If needed, you can enable prototype poisoning protection entirely (`false`) or one of the two checks (`'proto'` or `'constructor'`). For performance reasons, it is disabled by default. Read the `secure-json-parse` https://github.com/fastify/secure-json-parse[documentation] to learn more. +
|
|
||||||
_Default:_ `true`
|
|
||||||
|
|
||||||
|`caFingerprint`
|
|
||||||
|`string` - If configured, verify that the fingerprint of the CA certificate that has signed the certificate of the server matches the supplied fingerprint. Only accepts SHA256 digest fingerprints. +
|
|
||||||
_Default:_ `null`
|
|
||||||
|
|
||||||
|`maxResponseSize`
|
|
||||||
|`number` - When configured, it verifies that the uncompressed response size is lower than the configured number, if it's higher it will abort the request. It cannot be higher than buffer.constants.MAX_STRING_LENGTH +
|
|
||||||
_Default:_ `null`
|
|
||||||
|
|
||||||
|`maxCompressedResponseSize`
|
|
||||||
|`number` - When configured, it verifies that the compressed response size is lower than the configured number, if it's higher it will abort the request. It cannot be higher than buffer.constants.MAX_LENGTH +
|
|
||||||
_Default:_ `null`
|
|
||||||
|
|
||||||
|===
|
|
||||||
@ -1,929 +0,0 @@
|
|||||||
[[changelog-client]]
|
|
||||||
== Release notes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 9.0.0
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Breaking changes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Drop support for deprecated `body` parameter
|
|
||||||
|
|
||||||
In 8.0, the top-level `body` parameter that was available on all API functions <<remove-body-key,was deprecated>>. In 9.0 this property is completely removed.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.17.0
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Features
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Support for Elasticsearch `v8.17`
|
|
||||||
|
|
||||||
You can find all the API changes
|
|
||||||
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/release-notes-8.17.0.html[here].
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.16.3
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Fixes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Improved support for Elasticsearch `v8.16`
|
|
||||||
|
|
||||||
Updated TypeScript types based on fixes and improvements to the Elasticsearch specification.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.16.2
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Fixes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Improved support for Elasticsearch `v8.16`
|
|
||||||
|
|
||||||
Updated TypeScript types based on fixes and improvements to the Elasticsearch specification.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Drop testing artifacts from npm package
|
|
||||||
|
|
||||||
Tap, the unit testing tool used by this project, was recently upgraded and started writing to a `.tap` directory. Since tests are run prior to an `npm publish` in CI, this directory was being included in the published package and bloating its size.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.16.1
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Fixes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Fix ECMAScript imports
|
|
||||||
|
|
||||||
Fixed package configuration to correctly support native ECMAScript `import` syntax.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.16.0
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Features
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Support for Elasticsearch `v8.16`
|
|
||||||
|
|
||||||
You can find all the API changes
|
|
||||||
https://www.elastic.co/guide/en/elasticsearch/reference/8.16/release-notes-8.16.0.html[here].
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Support Apache Arrow in ES|QL helper
|
|
||||||
|
|
||||||
The ES|QL helper can now return results as an Apache Arrow `Table` or `RecordBatchReader`, which enables high-performance calculations on ES|QL results, even if the response data is larger than the system's available memory. See <<esql-helper>> for more information.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Fixes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Pass prototype poisoning options to serializer correctly
|
|
||||||
|
|
||||||
The client's `disablePrototypePoisoningProtection` option was set to `true` by default, but when it was set to any other value it was ignored, making it impossible to enable prototype poisoning protection without providing a custom serializer implementation.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.15.3
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Fixes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Improved support for Elasticsearch `v8.15`
|
|
||||||
|
|
||||||
Updated TypeScript types based on fixes and improvements to the Elasticsearch specification.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Drop testing artifacts from npm package
|
|
||||||
|
|
||||||
Tap, the unit testing tool, was recently upgraded and started writing to a `.tap` directory. Since tests are run prior to an `npm publish` in CI, this directory was being included in the published package and bloating its size.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.15.2
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Fixes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Improved support for Elasticsearch `v8.15`
|
|
||||||
|
|
||||||
Updated TypeScript types based on fixes and improvements to the Elasticsearch specification.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.15.1
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Fixes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Improved support for Elasticsearch `v8.15`
|
|
||||||
|
|
||||||
Updated TypeScript types based on fixes and improvements to the Elasticsearch specification.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.15.0
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Features
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Support for Elasticsearch `v8.15.0`
|
|
||||||
|
|
||||||
You can find all the API changes
|
|
||||||
https://www.elastic.co/guide/en/elasticsearch/reference/8.15/release-notes-8.15.0.html[here].
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== OpenTelemetry zero-code instrumentation support
|
|
||||||
|
|
||||||
For those that use an observability service that supports OpenTelemetry spans, the client will now automatically generate traces for each Elasticsearch request it makes.
|
|
||||||
See {jsclient}/observability.html#_opentelemetry[the docs]
|
|
||||||
for more information.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.14.1
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Features
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Improved support for Elasticsearch `8.14`
|
|
||||||
|
|
||||||
Updated types based on fixes and changes to the Elasticsearch specification.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.14.0
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Features
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Support for Elasticsearch `v8.14.0`
|
|
||||||
|
|
||||||
You can find all the API changes
|
|
||||||
https://www.elastic.co/guide/en/elasticsearch/reference/8.14/release-notes-8.14.0.html[here].
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== ES|QL object API helper
|
|
||||||
|
|
||||||
A helper method has been added that parses the response of an ES|QL query and converts it into an array of objects.
|
|
||||||
A TypeScript type parameter can also be provided to improve developer experience when working with the result. https://github.com/elastic/elasticsearch-js/pull/2238[#2238]
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== `onSuccess` callback added to bulk helper
|
|
||||||
|
|
||||||
The bulk helper now supports an `onSuccess` callback that will be called for each successful operation. https://github.com/elastic/elasticsearch-js/pull/2199[#2199]
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Request retries are more polite
|
|
||||||
|
|
||||||
https://github.com/elastic/elastic-transport-js/releases/tag/v8.6.0[`@elastic/transport` v8.6.0] was released, which refactored when and how failed requests are retried. Timed-out requests are no longer retried by default, and retries now use exponential backoff rather than running immediately.
|
|
||||||
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.13.1
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Fixes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Pin @elastic/transport to `~8.4.1`
|
|
||||||
|
|
||||||
Switching from `^8.4.1` to `~8.4.1` ensures 8.13 client users are not required to update to Node.js v18+, which is a new requirement set by `@elastic/transport` v8.5.0. See https://github.com/elastic/elastic-transport-js/issues/91[elastic/elastic-transport-js#91] for details.
|
|
||||||
|
|
||||||
v8.13.0 was also released depending on v8.4.0 of `@elastic/transport` instead of v8.4.1, which was unintentional.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.13.0
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Features
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Support for Elasticsearch `v8.13.0`
|
|
||||||
|
|
||||||
You can find all the API changes
|
|
||||||
https://www.elastic.co/guide/en/elasticsearch/reference/8.13/release-notes-8.13.0.html[here].
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Fixes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Ensure new connections inherit client's set defaults https://github.com/elastic/elasticsearch-js/pull/2159[#2159]
|
|
||||||
|
|
||||||
When instantiating a client, any connection-related defaults (e.g. `requestTimeout`) set on that client instance would not be inherited by nodes if they were entered as strings rather than a `ConnectionOptions` object.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.12.3
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Fixes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Bump @elastic/transport to `~8.4.1`
|
|
||||||
|
|
||||||
Switching from `^8.4.1` to `~8.4.1` ensures 8.12 client users are not required to update to Node.js v18+, which is a new requirement set by `@elastic/transport` v8.5.0. See https://github.com/elastic/elastic-transport-js/issues/91[elastic/elastic-transport-js#91] for details.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.12.2
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Fixes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Upgrade transport to 8.4.1 https://github.com/elastic/elasticsearch-js/pull/2137[#2137]
|
|
||||||
|
|
||||||
Upgrades `@elastic/transport` to 8.4.1 to resolve https://github.com/elastic/elastic-transport-js/pull/83[a bug] where arrays in error diagnostics were unintentionally transformed into objects.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.12.1
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Fixes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Fix hang in bulk helper semaphore https://github.com/elastic/elasticsearch-js/pull/2027[#2027]
|
|
||||||
|
|
||||||
The failing state could be reached when a server's response times are slower than flushInterval.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.12.0
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== Features
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Support for Elasticsearch `v8.12.0`
|
|
||||||
|
|
||||||
You can find all the API changes
|
|
||||||
https://www.elastic.co/guide/en/elasticsearch/reference/8.12/release-notes-8.12.0.html[here].
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.11.1
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Fixes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Bump @elastic/transport to `~8.4.0`
|
|
||||||
|
|
||||||
Switching from `^8.4.0` to `~8.4.0` ensures 8.11 client users are not required to update to Node.js v18+, which is a new requirement set by `@elastic/transport` v8.5.0. See https://github.com/elastic/elastic-transport-js/issues/91[elastic/elastic-transport-js#91] for details.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.11.0
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Features
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Support for Elasticsearch `v8.11.0`
|
|
||||||
|
|
||||||
You can find all the API changes
|
|
||||||
https://www.elastic.co/guide/en/elasticsearch/reference/8.11/release-notes-8.11.0.html[here].
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Enhanced support for redacting potentially sensitive data https://github.com/elastic/elasticsearch-js/pull/2095[#2095]
|
|
||||||
|
|
||||||
`@elastic/transport` https://github.com/elastic/elastic-transport-js/releases/tag/v8.4.0[version 8.4.0] introduces enhanced measures for ensuring that request metadata attached to some `Error` objects is redacted. This functionality is primarily to address custom logging solutions that don't use common serialization methods like `JSON.stringify`, `console.log`, or `util.inspect`, which were already accounted for.
|
|
||||||
|
|
||||||
See <<redaction>> for more information.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.10.1
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Fixes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Bump @elastic/transport to `~8.3.4`
|
|
||||||
|
|
||||||
Switching from `^8.3.4` to `~8.3.4` ensures 8.10 client users are not required to update to Node.js v18+, which is a new requirement set by `@elastic/transport` v8.5.0. See https://github.com/elastic/elastic-transport-js/issues/91[elastic/elastic-transport-js#91] for details.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.10.0
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Features
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Support for Elasticsearch `v8.10.0`
|
|
||||||
|
|
||||||
You can find all the API changes
|
|
||||||
https://www.elastic.co/guide/en/elasticsearch/reference/8.10/release-notes-8.10.0.html[here].
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.9.2
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Fixes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Bump @elastic/transport to `~8.3.4`
|
|
||||||
|
|
||||||
Switching from `^8.3.4` to `~8.3.4` ensures 8.9 client users are not required to update to Node.js v18+, which is a new requirement set by `@elastic/transport` v8.5.0. See https://github.com/elastic/elastic-transport-js/issues/91[elastic/elastic-transport-js#91] for details.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.9.1
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Fixes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Upgrade Transport https://github.com/elastic/elasticsearch-js/pull/1968[#1968]
|
|
||||||
|
|
||||||
Upgrades `@elastic/transport` to the latest patch release to fix https://github.com/elastic/elastic-transport-js/pull/69[a bug] that could cause the process to exit when handling malformed `HEAD` requests.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.9.0
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Features
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Support for Elasticsearch `v8.9.0`
|
|
||||||
|
|
||||||
You can find all the API changes
|
|
||||||
https://www.elastic.co/guide/en/elasticsearch/reference/8.9/release-notes-8.9.0.html[here].
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Allow document to be overwritten in `onDocument` iteratee of bulk helper https://github.com/elastic/elasticsearch-js/pull/1732[#1732]
|
|
||||||
|
|
||||||
In the {jsclient}/client-helpers.html#bulk-helper[bulk helper], documents could not be modified before being sent to Elasticsearch. It is now possible to {jsclient}/client-helpers.html#_modifying_a_document_before_operation[modify a document] before sending it.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Fixes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Updated `user-agent` header https://github.com/elastic/elasticsearch-js/pull/1954[#1954]
|
|
||||||
|
|
||||||
The `user-agent` header the client used to connect to Elasticsearch was using a non-standard format that has been improved.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.8.2
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Fixes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Bump @elastic/transport to `~8.3.2`
|
|
||||||
|
|
||||||
Switching from `^8.3.2` to `~8.3.2` ensures 8.8 client users are not required to update to Node.js v18+, which is a new requirement set by `@elastic/transport` v8.5.0. See https://github.com/elastic/elastic-transport-js/issues/91[elastic/elastic-transport-js#91] for details.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.8.1
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Features
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Support for Elasticsearch `v8.8.1`
|
|
||||||
|
|
||||||
You can find all the API changes
|
|
||||||
https://www.elastic.co/guide/en/elasticsearch/reference/8.8/release-notes-8.8.1.html[here].
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Fixes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Fix index drift bug in bulk helper https://github.com/elastic/elasticsearch-js/pull/1759[#1759]
|
|
||||||
|
|
||||||
Fixes a bug in the bulk helper that would cause `onDrop` to send back the wrong JSON document or error on a nonexistent document when an error occurred on a bulk HTTP request that contained a `delete` action.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Fix a memory leak caused by an outdated version of Undici https://github.com/elastic/elasticsearch-js/pull/1902[#1902]
|
|
||||||
|
|
||||||
Undici 5.5.1, used by https://github.com/elastic/elastic-transport-js[elastic-transport-js], could create a memory leak when a high volume of requests created too many HTTP `abort` listeners. Upgrading Undici to 5.22.1 removed the memory leak.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.8.0
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Features
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Support for Elasticsearch `v8.8.0`
|
|
||||||
|
|
||||||
You can find all the API changes
|
|
||||||
https://www.elastic.co/guide/en/elasticsearch/reference/8.8/release-notes-8.8.0.html[here].
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Fixes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Fix type declarations for legacy types with a body key https://github.com/elastic/elasticsearch-js/pull/1784[#1784]
|
|
||||||
|
|
||||||
Prior releases contained a bug where type declarations for legacy types that include a `body` key were not actually importing the type that includes the `body` key.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.7.3
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Fixes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Bump @elastic/transport to `~8.3.1`
|
|
||||||
|
|
||||||
Switching from `^8.3.1` to `~8.3.1` ensures 8.7 client users are not required to update to Node.js v18+, which is a new requirement set by `@elastic/transport` v8.5.0. See https://github.com/elastic/elastic-transport-js/issues/91[elastic/elastic-transport-js#91] for details.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.7.0
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Support for Elasticsearch `v8.7.0`
|
|
||||||
|
|
||||||
You can find all the API changes
|
|
||||||
https://www.elastic.co/guide/en/elasticsearch/reference/8.7/release-notes-8.7.0.html[here].
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.6.1
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Fixes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Bump @elastic/transport to `~8.3.1`
|
|
||||||
|
|
||||||
Switching from `^8.3.1` to `~8.3.1` ensures 8.6 client users are not required to update to Node.js v18+, which is a new requirement set by `@elastic/transport` v8.5.0. See https://github.com/elastic/elastic-transport-js/issues/91[elastic/elastic-transport-js#91] for details.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.6.0
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Bump @elastic/transport to 8.3.1+ https://github.com/elastic/elasticsearch-js/pull/1802[#1802]
|
|
||||||
|
|
||||||
The `@elastic/transport` dependency has been bumped to `~8.3.1` to ensure
|
|
||||||
fixes to the `maxResponseSize` option are available in the client.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Support for Elasticsearch `v8.6.0`
|
|
||||||
|
|
||||||
You can find all the API changes
|
|
||||||
https://www.elastic.co/guide/en/elasticsearch/reference/8.6/release-notes-8.6.0.html[here].
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.5.0
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Support for Elasticsearch `v8.5.0`
|
|
||||||
|
|
||||||
You can find all the API changes
|
|
||||||
https://www.elastic.co/guide/en/elasticsearch/reference/8.5/release-notes-8.5.0.html[here].
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.4.0
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Support for Elasticsearch `v8.4.0`
|
|
||||||
|
|
||||||
You can find all the API changes
|
|
||||||
https://www.elastic.co/guide/en/elasticsearch/reference/8.4/release-notes-8.4.0.html[here].
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.2.1
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Fixes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Support for Elasticsearch `v8.2.1`
|
|
||||||
|
|
||||||
You can find all the API changes
|
|
||||||
https://www.elastic.co/guide/en/elasticsearch/reference/8.2/release-notes-8.2.1.html[here].
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Fix ndjson APIs https://github.com/elastic/elasticsearch-js/pull/1688[#1688]
|
|
||||||
|
|
||||||
The previous release contained a bug that broken ndjson APIs.
|
|
||||||
We have released `v8.2.0-patch.1` to address this.
|
|
||||||
This fix is the same as the one we have released and we strongly recommend upgrading to this version.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Fix node shutdown apis https://github.com/elastic/elasticsearch-js/pull/1697[#1697]
|
|
||||||
|
|
||||||
The shutdown APIs wheren't complete, this fix completes them.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Types: move query keys to body https://github.com/elastic/elasticsearch-js/pull/1693[#1693]
|
|
||||||
|
|
||||||
The types definitions where wrongly representing the types of fields present in both query and body.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.2.0
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Breaking changes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Drop Node.js v12 https://github.com/elastic/elasticsearch-js/pull/1670[#1670]
|
|
||||||
|
|
||||||
According to our https://github.com/elastic/elasticsearch-js#nodejs-support[Node.js support matrix].
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Features
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Support for Elasticsearch `v8.2`
|
|
||||||
|
|
||||||
You can find all the API changes
|
|
||||||
https://www.elastic.co/guide/en/elasticsearch/reference/8.2/release-notes-8.2.0.html[here].
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== More lenient parameter checks https://github.com/elastic/elasticsearch-js/pull/1662[#1662]
|
|
||||||
|
|
||||||
When creating a new client, an `undefined` `caFingerprint` no longer trigger an error for a http connection.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Update TypeScript docs and export estypes https://github.com/elastic/elasticsearch-js/pull/1675[#1675]
|
|
||||||
|
|
||||||
You can import the full TypeScript requests & responses definitions as it follows:
|
|
||||||
[source,ts]
|
|
||||||
----
|
|
||||||
import { estypes } from '@elastic/elasticsearch'
|
|
||||||
----
|
|
||||||
|
|
||||||
If you need the legacy definitions with the body, you can do the following:
|
|
||||||
|
|
||||||
[source,ts]
|
|
||||||
----
|
|
||||||
import { estypesWithBody } from '@elastic/elasticsearch'
|
|
||||||
----
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Fixes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Updated hpagent to the latest version https://github.com/elastic/elastic-transport-js/pull/49[transport/#49]
|
|
||||||
|
|
||||||
You can fing the related changes https://github.com/delvedor/hpagent/releases/tag/v1.0.0[here].
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.1.0
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Features
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Support for Elasticsearch `v8.1`
|
|
||||||
|
|
||||||
You can find all the API changes
|
|
||||||
https://www.elastic.co/guide/en/elasticsearch/reference/8.1/release-notes-8.1.0.html[here].
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Export SniffingTransport https://github.com/elastic/elasticsearch-js/pull/1653[#1653]
|
|
||||||
|
|
||||||
Now the client exports the SniffingTransport class.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Fixes
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Fix onFlushTimeout timer not being cleared when upstream errors https://github.com/elastic/elasticsearch-js/pull/1616[#1616]
|
|
||||||
|
|
||||||
Fixes a memory leak caused by an error in the upstream dataset of the bulk helper.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Cleanup abort listener https://github.com/elastic/elastic-transport-js/pull/42[transport/#42]
|
|
||||||
|
|
||||||
The legacy http client was not cleaning up the abort listener, which could cause a memory leak.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Improve undici performances https://github.com/elastic/elastic-transport-js/pull/41[transport/#41]
|
|
||||||
|
|
||||||
Improve the stream body collection and keep alive timeout.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
=== 8.0.0
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Features
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Support for Elasticsearch `v8.0`
|
|
||||||
|
|
||||||
You can find all the API changes
|
|
||||||
https://www.elastic.co/guide/en/elasticsearch/reference/8.0/release-notes-8.0.0.html[here].
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Drop old typescript definitions
|
|
||||||
|
|
||||||
*Breaking: Yes* | *Migration effort: Medium*
|
|
||||||
|
|
||||||
The current TypeScript definitions will be removed from the client, and the new definitions, which contain request and response definitions as well will be shipped by default.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Drop callback-style API
|
|
||||||
|
|
||||||
*Breaking: Yes* | *Migration effort: Large*
|
|
||||||
|
|
||||||
Maintaining both API styles is not a problem per se, but it makes error handling more convoluted due to async stack traces.
|
|
||||||
Moving to a full-promise API will solve this issue.
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
// callback-style api
|
|
||||||
client.search({ params }, { options }, (err, result) => {
|
|
||||||
console.log(err || result)
|
|
||||||
})
|
|
||||||
|
|
||||||
// promise-style api
|
|
||||||
client.search({ params }, { options })
|
|
||||||
.then(console.log)
|
|
||||||
.catch(console.log)
|
|
||||||
|
|
||||||
// async-style (sugar syntax on top of promises)
|
|
||||||
const response = await client.search({ params }, { options })
|
|
||||||
console.log(response)
|
|
||||||
----
|
|
||||||
|
|
||||||
If you are already using the promise-style API, this won't be a breaking change for you.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Remove the current abort API and use the new AbortController standard
|
|
||||||
|
|
||||||
*Breaking: Yes* | *Migration effort: Small*
|
|
||||||
|
|
||||||
The old abort API makes sense for callbacks but it's annoying to use with promises
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
// callback-style api
|
|
||||||
const request = client.search({ params }, { options }, (err, result) => {
|
|
||||||
console.log(err) // RequestAbortedError
|
|
||||||
})
|
|
||||||
|
|
||||||
request.abort()
|
|
||||||
|
|
||||||
// promise-style api
|
|
||||||
const promise = client.search({ params }, { options })
|
|
||||||
|
|
||||||
promise
|
|
||||||
.then(console.log)
|
|
||||||
.catch(console.log) // RequestAbortedError
|
|
||||||
|
|
||||||
promise.abort()
|
|
||||||
----
|
|
||||||
|
|
||||||
Node v12 has added the standard https://nodejs.org/api/globals.html#globals_class_abortcontroller[`AbortController`] API which is designed to work well with both callbacks and promises.
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
const ac = new AbortController()
|
|
||||||
client.search({ params }, { signal: ac.signal })
|
|
||||||
.then(console.log)
|
|
||||||
.catch(console.log) // RequestAbortedError
|
|
||||||
|
|
||||||
ac.abort()
|
|
||||||
----
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
[[remove-body-key]]
|
|
||||||
===== Remove the body key from the request
|
|
||||||
|
|
||||||
*Breaking: Yes* | *Migration effort: Small*
|
|
||||||
|
|
||||||
Thanks to the new types we are developing now we know exactly where a parameter should go.
|
|
||||||
The client API leaks HTTP-related notions in many places, and removing them would definitely improve the DX.
|
|
||||||
|
|
||||||
This could be a rather big breaking change, so a double solution could be used during the 8.x lifecycle. (accepting body keys without them being wrapped in the body as well as the current solution).
|
|
||||||
|
|
||||||
To convert code from 7.x, you need to remove the `body` parameter in all the endpoints request.
|
|
||||||
For instance, this is an example for the `search` endpoint:
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
// from
|
|
||||||
const response = await client.search({
|
|
||||||
index: 'test',
|
|
||||||
body: {
|
|
||||||
query: {
|
|
||||||
match_all: {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
// to
|
|
||||||
const response = await client.search({
|
|
||||||
index: 'test',
|
|
||||||
query: {
|
|
||||||
match_all: {}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
----
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Migrate to new separate transport
|
|
||||||
|
|
||||||
*Breaking: Yes* | *Migration effort: Small to none*
|
|
||||||
|
|
||||||
The separated transport has been rewritten in TypeScript and has already dropped the callback style API.
|
|
||||||
Given that now is separated, most of the Elasticsearch specific concepts have been removed, and the client will likely need to extend parts of it for reintroducing them.
|
|
||||||
If you weren't extending the internals of the client, this won't be a breaking change for you.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== The returned value of API calls is the body and not the HTTP related keys
|
|
||||||
|
|
||||||
*Breaking: Yes* | *Migration effort: Small*
|
|
||||||
|
|
||||||
The client API leaks HTTP-related notions in many places, and removing them would definitely improve the DX.
|
|
||||||
The client will expose a new request-specific option to still get the full response details.
|
|
||||||
|
|
||||||
The new behaviour returns the `body` value directly as response.
|
|
||||||
If you want to have the 7.x response format, you need to add `meta : true` in the request.
|
|
||||||
This will return all the HTTP meta information, including the `body`.
|
|
||||||
|
|
||||||
For instance, this is an example for the `search` endpoint:
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
// from
|
|
||||||
const response = await client.search({
|
|
||||||
index: 'test',
|
|
||||||
body: {
|
|
||||||
query: {
|
|
||||||
match_all: {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
console.log(response) // { body: SearchResponse, statusCode: number, headers: object, warnings: array }
|
|
||||||
|
|
||||||
// to
|
|
||||||
const response = await client.search({
|
|
||||||
index: 'test',
|
|
||||||
query: {
|
|
||||||
match_all: {}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
console.log(response) // SearchResponse
|
|
||||||
|
|
||||||
// with a bit of TypeScript and JavaScript magic...
|
|
||||||
const response = await client.search({
|
|
||||||
index: 'test',
|
|
||||||
query: {
|
|
||||||
match_all: {}
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
meta: true
|
|
||||||
})
|
|
||||||
console.log(response) // { body: SearchResponse, statusCode: number, headers: object, warnings: array }
|
|
||||||
----
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Use a weighted connection pool
|
|
||||||
|
|
||||||
*Breaking: Yes* | *Migration effort: Small to none*
|
|
||||||
|
|
||||||
Move from the current cluster connection pool to a weight-based implementation.
|
|
||||||
This new implementation offers better performances and runs less code in the background, the old connection pool can still be used.
|
|
||||||
If you weren't extending the internals of the client, this won't be a breaking change for you.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Migrate to the "undici" http client
|
|
||||||
|
|
||||||
*Breaking: Yes* | *Migration effort: Small to none*
|
|
||||||
|
|
||||||
By default, the HTTP client will no longer be the default Node.js HTTP client, but https://github.com/nodejs/undici[undici] instead.
|
|
||||||
Undici is a brand new HTTP client written from scratch, it offers vastly improved performances and has better support for promises.
|
|
||||||
Furthermore, it offers comprehensive and predictable error handling. The old HTTP client can still be used.
|
|
||||||
If you weren't extending the internals of the client, this won't be a breaking change for you.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Drop support for old camelCased keys
|
|
||||||
|
|
||||||
*Breaking: Yes* | *Migration effort: Medium*
|
|
||||||
|
|
||||||
Currently, every path or query parameter could be expressed in both `snake_case` and `camelCase`. Internally the client will convert everything to `snake_case`.
|
|
||||||
This was done in an effort to reduce the friction of migrating from the legacy to the new client, but now it no longer makes sense.
|
|
||||||
If you are already using `snake_case` keys, this won't be a breaking change for you.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Rename `ssl` option to `tls`
|
|
||||||
|
|
||||||
*Breaking: Yes* | *Migration effort: Small*
|
|
||||||
|
|
||||||
People usually refers to this as `tls`, furthermore, internally we use the tls API and Node.js refers to it as tls everywhere.
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
// before
|
|
||||||
const client = new Client({
|
|
||||||
node: 'https://localhost:9200',
|
|
||||||
ssl: {
|
|
||||||
rejectUnauthorized: false
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
// after
|
|
||||||
const client = new Client({
|
|
||||||
node: 'https://localhost:9200',
|
|
||||||
tls: {
|
|
||||||
rejectUnauthorized: false
|
|
||||||
}
|
|
||||||
})
|
|
||||||
----
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Remove prototype poisoning protection
|
|
||||||
|
|
||||||
*Breaking: Yes* | *Migration effort: Small*
|
|
||||||
|
|
||||||
Prototype poisoning protection is very useful, but it can cause performances issues with big payloads.
|
|
||||||
In v8 it will be removed, and the documentation will show how to add it back with a custom serializer.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Remove client extensions API
|
|
||||||
|
|
||||||
*Breaking: Yes* | *Migration effort: Large*
|
|
||||||
|
|
||||||
Nowadays the client support the entire Elasticsearch API, and the `transport.request` method can be used if necessary. The client extensions API have no reason to exist.
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
client.extend('utility.index', ({ makeRequest }) => {
|
|
||||||
return function _index (params, options) {
|
|
||||||
// your code
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
client.utility.index(...)
|
|
||||||
----
|
|
||||||
|
|
||||||
If you weren't using client extensions, this won't be a breaking change for you.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Move to TypeScript
|
|
||||||
|
|
||||||
*Breaking: No* | *Migration effort: None*
|
|
||||||
|
|
||||||
The new separated transport is already written in TypeScript, and it makes sense that the client v8 will be fully written in TypeScript as well.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Move from emitter-like interface to a diagnostic method
|
|
||||||
|
|
||||||
*Breaking: Yes* | *Migration effort: Small*
|
|
||||||
|
|
||||||
Currently, the client offers a subset of methods of the `EventEmitter` class, v8 will ship with a `diagnostic` property which will be a proper event emitter.
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
// from
|
|
||||||
client.on('request', console.log)
|
|
||||||
|
|
||||||
// to
|
|
||||||
client.diagnostic.on('request', console.log)
|
|
||||||
----
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Remove username & password properties from Cloud configuration
|
|
||||||
|
|
||||||
*Breaking: Yes* | *Migration effort: Small*
|
|
||||||
|
|
||||||
The Cloud configuration does not support ApiKey and Bearer auth, while the `auth` options does.
|
|
||||||
There is no need to keep the legacy basic auth support in the cloud configuration.
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
// before
|
|
||||||
const client = new Client({
|
|
||||||
cloud: {
|
|
||||||
id: '<cloud-id>',
|
|
||||||
username: 'elastic',
|
|
||||||
password: 'changeme'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
// after
|
|
||||||
const client = new Client({
|
|
||||||
cloud: {
|
|
||||||
id: '<cloud-id>'
|
|
||||||
},
|
|
||||||
auth: {
|
|
||||||
username: 'elastic',
|
|
||||||
password: 'changeme'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
----
|
|
||||||
|
|
||||||
If you are already passing the basic auth options in the `auth` configuration, this won't be a breaking change for you.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Calling `client.close` will reject new requests
|
|
||||||
|
|
||||||
Once you call `client.close` every new request after that will be rejected with a `NoLivingConnectionsError`. In-flight requests will be executed normally unless an in-flight request requires a retry, in which case it will be rejected.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Parameters rename
|
|
||||||
|
|
||||||
- `ilm.delete_lifecycle`: `policy` parameter has been renamed to `name`
|
|
||||||
- `ilm.get_lifecycle`: `policy` parameter has been renamed to `name`
|
|
||||||
- `ilm.put_lifecycle`: `policy` parameter has been renamed to `name`
|
|
||||||
- `snapshot.cleanup_repository`: `repository` parameter has been renamed to `name`
|
|
||||||
- `snapshot.create_repository`: `repository` parameter has been renamed to `name`
|
|
||||||
- `snapshot.delete_repository`: `repository` parameter has been renamed to `name`
|
|
||||||
- `snapshot.get_repository`: `repository` parameter has been renamed to `name`
|
|
||||||
- `snapshot.verify_repository`: `repository` parameter has been renamed to `name`
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
===== Removal of snake_cased methods
|
|
||||||
|
|
||||||
The v7 client provided snake_cased methods, such as `client.delete_by_query`. This is no longer supported, now only camelCased method are present.
|
|
||||||
So `client.delete_by_query` can be accessed with `client.deleteByQuery`
|
|
||||||
|
|
||||||
@ -1,36 +0,0 @@
|
|||||||
[[child]]
|
|
||||||
=== Creating a child client
|
|
||||||
|
|
||||||
There are some use cases where you may need multiple instances of the client.
|
|
||||||
You can easily do that by calling `new Client()` as many times as you need, but
|
|
||||||
you will lose all the benefits of using one single client, such as the long
|
|
||||||
living connections and the connection pool handling. To avoid this problem, the
|
|
||||||
client offers a `child` API, which returns a new client instance that shares the
|
|
||||||
connection pool with the parent client.
|
|
||||||
|
|
||||||
NOTE: The event emitter is shared between the parent and the child(ren). If you
|
|
||||||
extend the parent client, the child client will have the same extensions, while
|
|
||||||
if the child client adds an extension, the parent client will not be extended.
|
|
||||||
|
|
||||||
You can pass to the `child` every client option you would pass to a normal
|
|
||||||
client, but the connection pool specific options (`ssl`, `agent`, `pingTimeout`,
|
|
||||||
`Connection`, and `resurrectStrategy`).
|
|
||||||
|
|
||||||
CAUTION: If you call `close` in any of the parent/child clients, every client
|
|
||||||
will be closed.
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
const { Client } = require('@elastic/elasticsearch')
|
|
||||||
const client = new Client({
|
|
||||||
cloud: { id: '<cloud-id>' },
|
|
||||||
auth: { apiKey: 'base64EncodedKey' }
|
|
||||||
})
|
|
||||||
const child = client.child({
|
|
||||||
headers: { 'x-foo': 'bar' },
|
|
||||||
requestTimeout: 1000
|
|
||||||
})
|
|
||||||
|
|
||||||
client.info().then(console.log, console.log)
|
|
||||||
child.info().then(console.log, console.log)
|
|
||||||
----
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
[[client-configuration]]
|
|
||||||
== Configuration
|
|
||||||
|
|
||||||
|
|
||||||
The client is designed to be easily configured for your needs. In the following
|
|
||||||
section, you can see the possible options that you can use to configure it.
|
|
||||||
|
|
||||||
* <<basic-config>>
|
|
||||||
* <<advanced-config>>
|
|
||||||
* <<timeout-best-practices>>
|
|
||||||
* <<child>>
|
|
||||||
* <<client-testing>>
|
|
||||||
@ -1,738 +0,0 @@
|
|||||||
[[client-connecting]]
|
|
||||||
== Connecting
|
|
||||||
|
|
||||||
This page contains the information you need to connect and use the Client with
|
|
||||||
{es}.
|
|
||||||
|
|
||||||
**On this page**
|
|
||||||
|
|
||||||
* <<authentication, Authentication options>>
|
|
||||||
* <<client-usage, Using the client>>
|
|
||||||
* <<client-faas-env, Using the Client in a Function-as-a-Service Environment>>
|
|
||||||
* <<client-connect-proxy, Connecting through a proxy>>
|
|
||||||
* <<client-error-handling, Handling errors>>
|
|
||||||
* <<keep-alive, Keep-alive connections>>
|
|
||||||
* <<close-connections, Closing a client's connections>>
|
|
||||||
* <<product-check, Automatic product check>>
|
|
||||||
|
|
||||||
[[authentication]]
|
|
||||||
[discrete]
|
|
||||||
=== Authentication
|
|
||||||
|
|
||||||
This document contains code snippets to show you how to connect to various {es}
|
|
||||||
providers.
|
|
||||||
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
[[auth-ec]]
|
|
||||||
==== Elastic Cloud
|
|
||||||
|
|
||||||
If you are using https://www.elastic.co/cloud[Elastic Cloud], the client offers
|
|
||||||
an easy way to connect to it via the `cloud` option. You must pass the Cloud ID
|
|
||||||
that you can find in the cloud console, then your username and password inside
|
|
||||||
the `auth` option.
|
|
||||||
|
|
||||||
NOTE: When connecting to Elastic Cloud, the client will automatically enable
|
|
||||||
both request and response compression by default, since it yields significant
|
|
||||||
throughput improvements. Moreover, the client will also set the tls option
|
|
||||||
`secureProtocol` to `TLSv1_2_method` unless specified otherwise. You can still
|
|
||||||
override this option by configuring them.
|
|
||||||
|
|
||||||
IMPORTANT: Do not enable sniffing when using Elastic Cloud, since the nodes are
|
|
||||||
behind a load balancer, Elastic Cloud will take care of everything for you.
|
|
||||||
Take a look https://www.elastic.co/blog/elasticsearch-sniffing-best-practices-what-when-why-how[here]
|
|
||||||
to know more.
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
const { Client } = require('@elastic/elasticsearch')
|
|
||||||
const client = new Client({
|
|
||||||
cloud: {
|
|
||||||
id: '<cloud-id>'
|
|
||||||
},
|
|
||||||
auth: {
|
|
||||||
username: 'elastic',
|
|
||||||
password: 'changeme'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
----
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
[[connect-self-managed-new]]
|
|
||||||
=== Connecting to a self-managed cluster
|
|
||||||
|
|
||||||
By default {es} will start with security features like authentication and TLS
|
|
||||||
enabled. To connect to the {es} cluster you'll need to configure the Node.js {es}
|
|
||||||
client to use HTTPS with the generated CA certificate in order to make requests
|
|
||||||
successfully.
|
|
||||||
|
|
||||||
If you're just getting started with {es} we recommend reading the documentation
|
|
||||||
on https://www.elastic.co/guide/en/elasticsearch/reference/current/settings.html[configuring]
|
|
||||||
and
|
|
||||||
https://www.elastic.co/guide/en/elasticsearch/reference/current/starting-elasticsearch.html[starting {es}]
|
|
||||||
to ensure your cluster is running as expected.
|
|
||||||
|
|
||||||
When you start {es} for the first time you'll see a distinct block like the one
|
|
||||||
below in the output from {es} (you may have to scroll up if it's been a while):
|
|
||||||
|
|
||||||
[source,sh]
|
|
||||||
----
|
|
||||||
|
|
||||||
-> Elasticsearch security features have been automatically configured!
|
|
||||||
-> Authentication is enabled and cluster connections are encrypted.
|
|
||||||
|
|
||||||
-> Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`):
|
|
||||||
lhQpLELkjkrawaBoaz0Q
|
|
||||||
|
|
||||||
-> HTTP CA certificate SHA-256 fingerprint:
|
|
||||||
a52dd93511e8c6045e21f16654b77c9ee0f34aea26d9f40320b531c474676228
|
|
||||||
...
|
|
||||||
|
|
||||||
----
|
|
||||||
|
|
||||||
Depending on the circumstances there are two options for verifying the HTTPS
|
|
||||||
connection, either verifying with the CA certificate itself or via the HTTP CA
|
|
||||||
certificate fingerprint.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
[[auth-tls]]
|
|
||||||
==== TLS configuration
|
|
||||||
|
|
||||||
The generated root CA certificate can be found in the `certs` directory in your
|
|
||||||
{es} config location (`$ES_CONF_PATH/certs/http_ca.crt`). If you're running {es}
|
|
||||||
in Docker there is
|
|
||||||
https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html[additional documentation for retrieving the CA certificate].
|
|
||||||
|
|
||||||
Without any additional configuration you can specify `https://` node urls, and
|
|
||||||
the certificates used to sign these requests will be verified. To turn off
|
|
||||||
certificate verification, you must specify an `tls` object in the top level
|
|
||||||
config and set `rejectUnauthorized: false`. The default `tls` values are the
|
|
||||||
same that Node.js's https://nodejs.org/api/tls.html#tls_tls_connect_options_callback[`tls.connect()`]
|
|
||||||
uses.
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
const { Client } = require('@elastic/elasticsearch')
|
|
||||||
const client = new Client({
|
|
||||||
node: 'https://localhost:9200',
|
|
||||||
auth: {
|
|
||||||
username: 'elastic',
|
|
||||||
password: 'changeme'
|
|
||||||
},
|
|
||||||
tls: {
|
|
||||||
ca: fs.readFileSync('./http_ca.crt'),
|
|
||||||
rejectUnauthorized: false
|
|
||||||
}
|
|
||||||
})
|
|
||||||
----
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
[[auth-ca-fingerprint]]
|
|
||||||
==== CA fingerprint
|
|
||||||
|
|
||||||
You can configure the client to only trust certificates that are signed by a specific CA certificate
|
|
||||||
(CA certificate pinning) by providing a `caFingerprint` option.
|
|
||||||
This will verify that the fingerprint of the CA certificate that has signed
|
|
||||||
the certificate of the server matches the supplied value.
|
|
||||||
You must configure a SHA256 digest.
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
const { Client } = require('@elastic/elasticsearch')
|
|
||||||
const client = new Client({
|
|
||||||
node: 'https://example.com'
|
|
||||||
auth: { ... },
|
|
||||||
// the fingerprint (SHA256) of the CA certificate that is used to sign
|
|
||||||
// the certificate that the Elasticsearch node presents for TLS.
|
|
||||||
caFingerprint: '20:0D:CA:FA:76:...',
|
|
||||||
tls: {
|
|
||||||
// might be required if it's a self-signed certificate
|
|
||||||
rejectUnauthorized: false
|
|
||||||
}
|
|
||||||
})
|
|
||||||
----
|
|
||||||
|
|
||||||
The certificate fingerprint can be calculated using `openssl x509` with the
|
|
||||||
certificate file:
|
|
||||||
|
|
||||||
[source,sh]
|
|
||||||
----
|
|
||||||
openssl x509 -fingerprint -sha256 -noout -in /path/to/http_ca.crt
|
|
||||||
----
|
|
||||||
|
|
||||||
If you don't have access to the generated CA file from {es} you can use the
|
|
||||||
following script to output the root CA fingerprint of the {es} instance with
|
|
||||||
`openssl s_client`:
|
|
||||||
|
|
||||||
[source,sh]
|
|
||||||
----
|
|
||||||
# Replace the values of 'localhost' and '9200' to the
|
|
||||||
# corresponding host and port values for the cluster.
|
|
||||||
openssl s_client -connect localhost:9200 -servername localhost -showcerts </dev/null 2>/dev/null \
|
|
||||||
| openssl x509 -fingerprint -sha256 -noout -in /dev/stdin
|
|
||||||
----
|
|
||||||
|
|
||||||
The output of `openssl x509` will look something like this:
|
|
||||||
|
|
||||||
[source,sh]
|
|
||||||
----
|
|
||||||
SHA256 Fingerprint=A5:2D:D9:35:11:E8:C6:04:5E:21:F1:66:54:B7:7C:9E:E0:F3:4A:EA:26:D9:F4:03:20:B5:31:C4:74:67:62:28
|
|
||||||
----
|
|
||||||
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
[[connect-no-security]]
|
|
||||||
=== Connecting without security enabled
|
|
||||||
|
|
||||||
WARNING: Running {es} without security enabled is not recommended.
|
|
||||||
|
|
||||||
If your cluster is configured with
|
|
||||||
https://www.elastic.co/guide/en/elasticsearch/reference/current/security-settings.html[security explicitly disabled]
|
|
||||||
then you can connect via HTTP:
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
const { Client } = require('@elastic/elasticsearch')
|
|
||||||
const client = new Client({
|
|
||||||
node: 'http://example.com'
|
|
||||||
})
|
|
||||||
----
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
[[auth-strategies]]
|
|
||||||
=== Authentication strategies
|
|
||||||
|
|
||||||
Following you can find all the supported authentication strategies.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
[[auth-apikey]]
|
|
||||||
==== ApiKey authentication
|
|
||||||
|
|
||||||
You can use the
|
|
||||||
{ref-7x}/security-api-create-api-key.html[ApiKey]
|
|
||||||
authentication by passing the `apiKey` parameter via the `auth` option. The
|
|
||||||
`apiKey` parameter can be either a base64 encoded string or an object with the
|
|
||||||
values that you can obtain from the
|
|
||||||
{ref-7x}/security-api-create-api-key.html[create api key endpoint].
|
|
||||||
|
|
||||||
NOTE: If you provide both basic authentication credentials and the ApiKey
|
|
||||||
configuration, the ApiKey takes precedence.
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
const { Client } = require('@elastic/elasticsearch')
|
|
||||||
const client = new Client({
|
|
||||||
node: 'https://localhost:9200',
|
|
||||||
auth: {
|
|
||||||
apiKey: 'base64EncodedKey'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
----
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
const { Client } = require('@elastic/elasticsearch')
|
|
||||||
const client = new Client({
|
|
||||||
node: 'https://localhost:9200',
|
|
||||||
auth: {
|
|
||||||
apiKey: {
|
|
||||||
id: 'foo',
|
|
||||||
api_key: 'bar'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
----
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
[[auth-bearer]]
|
|
||||||
==== Bearer authentication
|
|
||||||
|
|
||||||
You can provide your credentials by passing the `bearer` token
|
|
||||||
parameter via the `auth` option.
|
|
||||||
Useful for https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-create-service-token.html[service account tokens].
|
|
||||||
Be aware that it does not handle automatic token refresh.
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
const { Client } = require('@elastic/elasticsearch')
|
|
||||||
const client = new Client({
|
|
||||||
node: 'https://localhost:9200',
|
|
||||||
auth: {
|
|
||||||
bearer: 'token'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
----
|
|
||||||
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
[[auth-basic]]
|
|
||||||
==== Basic authentication
|
|
||||||
|
|
||||||
You can provide your credentials by passing the `username` and `password`
|
|
||||||
parameters via the `auth` option.
|
|
||||||
|
|
||||||
NOTE: If you provide both basic authentication credentials and the Api Key
|
|
||||||
configuration, the Api Key will take precedence.
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
const { Client } = require('@elastic/elasticsearch')
|
|
||||||
const client = new Client({
|
|
||||||
node: 'https://localhost:9200',
|
|
||||||
auth: {
|
|
||||||
username: 'elastic',
|
|
||||||
password: 'changeme'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
----
|
|
||||||
|
|
||||||
|
|
||||||
Otherwise, you can provide your credentials in the node(s) URL.
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
const { Client } = require('@elastic/elasticsearch')
|
|
||||||
const client = new Client({
|
|
||||||
node: 'https://username:password@localhost:9200'
|
|
||||||
})
|
|
||||||
----
|
|
||||||
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
[[client-usage]]
|
|
||||||
=== Usage
|
|
||||||
|
|
||||||
Using the client is straightforward, it supports all the public APIs of {es},
|
|
||||||
and every method exposes the same signature.
|
|
||||||
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
const { Client } = require('@elastic/elasticsearch')
|
|
||||||
const client = new Client({
|
|
||||||
cloud: { id: '<cloud-id>' },
|
|
||||||
auth: { apiKey: 'base64EncodedKey' }
|
|
||||||
})
|
|
||||||
|
|
||||||
const result = await client.search({
|
|
||||||
index: 'my-index',
|
|
||||||
query: {
|
|
||||||
match: { hello: 'world' }
|
|
||||||
}
|
|
||||||
})
|
|
||||||
----
|
|
||||||
|
|
||||||
The returned value of every API call is the response body from {es}.
|
|
||||||
If you need to access additonal metadata, such as the status code or headers,
|
|
||||||
you must specify `meta: true` in the request options:
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
const { Client } = require('@elastic/elasticsearch')
|
|
||||||
const client = new Client({
|
|
||||||
cloud: { id: '<cloud-id>' },
|
|
||||||
auth: { apiKey: 'base64EncodedKey' }
|
|
||||||
})
|
|
||||||
|
|
||||||
const result = await client.search({
|
|
||||||
index: 'my-index',
|
|
||||||
query: {
|
|
||||||
match: { hello: 'world' }
|
|
||||||
}
|
|
||||||
}, { meta: true })
|
|
||||||
----
|
|
||||||
|
|
||||||
In this case, the result will be:
|
|
||||||
[source,ts]
|
|
||||||
----
|
|
||||||
{
|
|
||||||
body: object | boolean
|
|
||||||
statusCode: number
|
|
||||||
headers: object
|
|
||||||
warnings: string[],
|
|
||||||
meta: object
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
NOTE: The body is a boolean value when you use `HEAD` APIs.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Aborting a request
|
|
||||||
|
|
||||||
If needed, you can abort a running request by using the `AbortController` standard.
|
|
||||||
|
|
||||||
CAUTION: If you abort a request, the request will fail with a
|
|
||||||
`RequestAbortedError`.
|
|
||||||
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
const AbortController = require('node-abort-controller')
|
|
||||||
const { Client } = require('@elastic/elasticsearch')
|
|
||||||
const client = new Client({
|
|
||||||
cloud: { id: '<cloud-id>' },
|
|
||||||
auth: { apiKey: 'base64EncodedKey' }
|
|
||||||
})
|
|
||||||
|
|
||||||
const abortController = new AbortController()
|
|
||||||
setImmediate(() => abortController.abort())
|
|
||||||
|
|
||||||
const result = await client.search({
|
|
||||||
index: 'my-index',
|
|
||||||
query: {
|
|
||||||
match: { hello: 'world' }
|
|
||||||
}
|
|
||||||
}, { signal: abortController.signal })
|
|
||||||
----
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Request specific options
|
|
||||||
|
|
||||||
If needed you can pass request specific options in a second object:
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
const result = await client.search({
|
|
||||||
index: 'my-index',
|
|
||||||
body: {
|
|
||||||
query: {
|
|
||||||
match: { hello: 'world' }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
ignore: [404],
|
|
||||||
maxRetries: 3
|
|
||||||
})
|
|
||||||
----
|
|
||||||
|
|
||||||
|
|
||||||
The supported request specific options are:
|
|
||||||
[cols=2*]
|
|
||||||
|===
|
|
||||||
|`ignore`
|
|
||||||
|`number[]` - HTTP status codes which should not be considered errors for this request. +
|
|
||||||
_Default:_ `null`
|
|
||||||
|
|
||||||
|`requestTimeout`
|
|
||||||
|`number | string` - Max request timeout for the request in milliseconds, it overrides the client default. +
|
|
||||||
_Default:_ `30000`
|
|
||||||
|
|
||||||
|`retryOnTimeout`
|
|
||||||
|`boolean` - Retry requests that have timed out.
|
|
||||||
_Default:_ `false`
|
|
||||||
|
|
||||||
|`maxRetries`
|
|
||||||
|`number` - Max number of retries for the request, it overrides the client default. +
|
|
||||||
_Default:_ `3`
|
|
||||||
|
|
||||||
|`compression`
|
|
||||||
|`string | boolean` - Enables body compression for the request. +
|
|
||||||
_Options:_ `false`, `'gzip'` +
|
|
||||||
_Default:_ `false`
|
|
||||||
|
|
||||||
|`asStream`
|
|
||||||
|`boolean` - Instead of getting the parsed body back, you get the raw Node.js stream of data. +
|
|
||||||
_Default:_ `false`
|
|
||||||
|
|
||||||
|`headers`
|
|
||||||
|`object` - Custom headers for the request. +
|
|
||||||
_Default:_ `null`
|
|
||||||
|
|
||||||
|`querystring`
|
|
||||||
|`object` - Custom querystring for the request. +
|
|
||||||
_Default:_ `null`
|
|
||||||
|
|
||||||
|`id`
|
|
||||||
|`any` - Custom request id. _(overrides the top level request id generator)_ +
|
|
||||||
_Default:_ `null`
|
|
||||||
|
|
||||||
|`context`
|
|
||||||
|`any` - Custom object per request. _(you can use it to pass data to the clients events)_ +
|
|
||||||
_Default:_ `null`
|
|
||||||
|
|
||||||
|`opaqueId`
|
|
||||||
|`string` - Set the `X-Opaque-Id` HTTP header. See {ref}/api-conventions.html#x-opaque-id
|
|
||||||
_Default:_ `null`
|
|
||||||
|
|
||||||
|`maxResponseSize`
|
|
||||||
|`number` - When configured, it verifies that the uncompressed response size is lower than the configured number, if it's higher it will abort the request. It cannot be higher than buffer.constants.MAX_STRING_LENTGH +
|
|
||||||
_Default:_ `null`
|
|
||||||
|
|
||||||
|`maxCompressedResponseSize`
|
|
||||||
|`number` - When configured, it verifies that the compressed response size is lower than the configured number, if it's higher it will abort the request. It cannot be higher than buffer.constants.MAX_LENTGH +
|
|
||||||
_Default:_ `null`
|
|
||||||
|
|
||||||
|`signal`
|
|
||||||
|`AbortSignal` - The AbortSignal instance to allow request abortion. +
|
|
||||||
_Default:_ `null`
|
|
||||||
|
|
||||||
|`meta`
|
|
||||||
|`boolean` - Rather than returning the body, return an object containing `body`, `statusCode`, `headers` and `meta` keys +
|
|
||||||
_Default_: `false`
|
|
||||||
|
|
||||||
|`redaction`
|
|
||||||
|`object` - Options for redacting potentially sensitive data from error metadata. See <<redaction>>.
|
|
||||||
|
|
||||||
|`retryBackoff`
|
|
||||||
|`(min: number, max: number, attempt: number) => number;` - A function that calculates how long to sleep, in seconds, before the next request retry +
|
|
||||||
_Default:_ A built-in function that uses exponential backoff with jitter.
|
|
||||||
|
|
||||||
|===
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
[[client-faas-env]]
|
|
||||||
=== Using the Client in a Function-as-a-Service Environment
|
|
||||||
|
|
||||||
This section illustrates the best practices for leveraging the {es} client in a Function-as-a-Service (FaaS) environment.
|
|
||||||
The most influential optimization is to initialize the client outside of the function, the global scope.
|
|
||||||
This practice does not only improve performance but also enables background functionality as – for example – https://www.elastic.co/blog/elasticsearch-sniffing-best-practices-what-when-why-how[sniffing].
|
|
||||||
The following examples provide a skeleton for the best practices.
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== GCP Cloud Functions
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
'use strict'
|
|
||||||
|
|
||||||
const { Client } = require('@elastic/elasticsearch')
|
|
||||||
|
|
||||||
const client = new Client({
|
|
||||||
// client initialisation
|
|
||||||
})
|
|
||||||
|
|
||||||
exports.testFunction = async function (req, res) {
|
|
||||||
// use the client
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== AWS Lambda
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
'use strict'
|
|
||||||
|
|
||||||
const { Client } = require('@elastic/elasticsearch')
|
|
||||||
|
|
||||||
const client = new Client({
|
|
||||||
// client initialisation
|
|
||||||
})
|
|
||||||
|
|
||||||
exports.handler = async function (event, context) {
|
|
||||||
// use the client
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
==== Azure Functions
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
'use strict'
|
|
||||||
|
|
||||||
const { Client } = require('@elastic/elasticsearch')
|
|
||||||
|
|
||||||
const client = new Client({
|
|
||||||
// client initialisation
|
|
||||||
})
|
|
||||||
|
|
||||||
module.exports = async function (context, req) {
|
|
||||||
// use the client
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
Resources used to assess these recommendations:
|
|
||||||
|
|
||||||
- https://cloud.google.com/functions/docs/bestpractices/tips#use_global_variables_to_reuse_objects_in_future_invocations[GCP Cloud Functions: Tips & Tricks]
|
|
||||||
- https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html[Best practices for working with AWS Lambda functions]
|
|
||||||
- https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-python?tabs=azurecli-linux%2Capplication-level#global-variables[Azure Functions Python developer guide]
|
|
||||||
- https://docs.aws.amazon.com/lambda/latest/operatorguide/global-scope.html[AWS Lambda: Comparing the effect of global scope]
|
|
||||||
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
[[client-connect-proxy]]
|
|
||||||
=== Connecting through a proxy
|
|
||||||
|
|
||||||
~Added~ ~in~ ~`v7.10.0`~
|
|
||||||
|
|
||||||
If you need to pass through an http(s) proxy for connecting to {es}, the client
|
|
||||||
out of the box offers a handy configuration for helping you with it. Under the
|
|
||||||
hood, it uses the https://github.com/delvedor/hpagent[`hpagent`] module.
|
|
||||||
|
|
||||||
IMPORTANT: In versions 8.0+ of the client, the default `Connection` type is set to `UndiciConnection`, which does not support proxy configurations.
|
|
||||||
To use a proxy, you will need to use the `HttpConnection` class from `@elastic/transport` instead.
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
import { HttpConnection } from '@elastic/transport'
|
|
||||||
|
|
||||||
const client = new Client({
|
|
||||||
node: 'http://localhost:9200',
|
|
||||||
proxy: 'http://localhost:8080',
|
|
||||||
Connection: HttpConnection,
|
|
||||||
})
|
|
||||||
----
|
|
||||||
|
|
||||||
Basic authentication is supported as well:
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
const client = new Client({
|
|
||||||
node: 'http://localhost:9200',
|
|
||||||
proxy: 'http:user:pwd@//localhost:8080',
|
|
||||||
Connection: HttpConnection,
|
|
||||||
})
|
|
||||||
----
|
|
||||||
|
|
||||||
If you are connecting through a non-http(s) proxy, such as a `socks5` or `pac`,
|
|
||||||
you can use the `agent` option to configure it.
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
const SocksProxyAgent = require('socks-proxy-agent')
|
|
||||||
const client = new Client({
|
|
||||||
node: 'http://localhost:9200',
|
|
||||||
agent () {
|
|
||||||
return new SocksProxyAgent('socks://127.0.0.1:1080')
|
|
||||||
},
|
|
||||||
Connection: HttpConnection,
|
|
||||||
})
|
|
||||||
----
|
|
||||||
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
[[client-error-handling]]
|
|
||||||
=== Error handling
|
|
||||||
|
|
||||||
The client exposes a variety of error objects that you can use to enhance your
|
|
||||||
error handling. You can find all the error objects inside the `errors` key in
|
|
||||||
the client.
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
const { errors } = require('@elastic/elasticsearch')
|
|
||||||
console.log(errors)
|
|
||||||
----
|
|
||||||
|
|
||||||
|
|
||||||
You can find the errors exported by the client in the table below.
|
|
||||||
|
|
||||||
[cols=3*]
|
|
||||||
|===
|
|
||||||
|*Error*
|
|
||||||
|*Description*
|
|
||||||
|*Properties*
|
|
||||||
|
|
||||||
|`ElasticsearchClientError`
|
|
||||||
|Every error inherits from this class, it is the basic error generated by the client.
|
|
||||||
a|* `name` - `string`
|
|
||||||
* `message` - `string`
|
|
||||||
|
|
||||||
|`TimeoutError`
|
|
||||||
|Generated when a request exceeds the `requestTimeout` option.
|
|
||||||
a|* `name` - `string`
|
|
||||||
* `message` - `string`
|
|
||||||
* `meta` - `object`, contains all the information about the request
|
|
||||||
|
|
||||||
|`ConnectionError`
|
|
||||||
|Generated when an error occurs during the request, it can be a connection error or a malformed stream of data.
|
|
||||||
a|* `name` - `string`
|
|
||||||
* `message` - `string`
|
|
||||||
* `meta` - `object`, contains all the information about the request
|
|
||||||
|
|
||||||
|`RequestAbortedError`
|
|
||||||
|Generated if the user calls the `request.abort()` method.
|
|
||||||
a|* `name` - `string`
|
|
||||||
* `message` - `string`
|
|
||||||
* `meta` - `object`, contains all the information about the request
|
|
||||||
|
|
||||||
|`NoLivingConnectionsError`
|
|
||||||
|Given the configuration, the ConnectionPool was not able to find a usable Connection for this request.
|
|
||||||
a|* `name` - `string`
|
|
||||||
* `message` - `string`
|
|
||||||
* `meta` - `object`, contains all the information about the request
|
|
||||||
|
|
||||||
|`SerializationError`
|
|
||||||
|Generated if the serialization fails.
|
|
||||||
a|* `name` - `string`
|
|
||||||
* `message` - `string`
|
|
||||||
* `data` - `object`, the object to serialize
|
|
||||||
|
|
||||||
|`DeserializationError`
|
|
||||||
|Generated if the deserialization fails.
|
|
||||||
a|* `name` - `string`
|
|
||||||
* `message` - `string`
|
|
||||||
* `data` - `string`, the string to deserialize
|
|
||||||
|
|
||||||
|`ConfigurationError`
|
|
||||||
|Generated if there is a malformed configuration or parameter.
|
|
||||||
a|* `name` - `string`
|
|
||||||
* `message` - `string`
|
|
||||||
|
|
||||||
|`ResponseError`
|
|
||||||
|Generated when in case of a `4xx` or `5xx` response.
|
|
||||||
a|* `name` - `string`
|
|
||||||
* `message` - `string`
|
|
||||||
* `meta` - `object`, contains all the information about the request
|
|
||||||
* `body` - `object`, the response body
|
|
||||||
* `statusCode` - `object`, the response headers
|
|
||||||
* `headers` - `object`, the response status code
|
|
||||||
|===
|
|
||||||
|
|
||||||
[[keep-alive]]
|
|
||||||
[discrete]
|
|
||||||
=== Keep-alive connections
|
|
||||||
|
|
||||||
By default, the client uses persistent, keep-alive connections to reduce the overhead of creating a new HTTP connection for each Elasticsearch request.
|
|
||||||
If you are using the default `UndiciConnection` connection class, it maintains a pool of 256 connections with a keep-alive of 10 minutes.
|
|
||||||
If you are using the legacy `HttpConnection` connection class, it maintains a pool of 256 connections with a keep-alive of 1 minute.
|
|
||||||
|
|
||||||
If you need to disable keep-alive connections, you can override the HTTP agent with your preferred https://nodejs.org/api/http.html#http_new_agent_options[HTTP agent options]:
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
const client = new Client({
|
|
||||||
node: 'http://localhost:9200',
|
|
||||||
// the function takes as parameter the option
|
|
||||||
// object passed to the Connection constructor
|
|
||||||
agent: (opts) => new CustomAgent()
|
|
||||||
})
|
|
||||||
----
|
|
||||||
|
|
||||||
Or you can disable the HTTP agent entirely:
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
const client = new Client({
|
|
||||||
node: 'http://localhost:9200',
|
|
||||||
// Disable agent and keep-alive
|
|
||||||
agent: false
|
|
||||||
})
|
|
||||||
----
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
[[close-connections]]
|
|
||||||
=== Closing a client's connections
|
|
||||||
|
|
||||||
If you would like to close all open connections being managed by an instance of the client, use the `close()` function:
|
|
||||||
|
|
||||||
[source,js]
|
|
||||||
----
|
|
||||||
const client = new Client({
|
|
||||||
node: 'http://localhost:9200'
|
|
||||||
});
|
|
||||||
client.close();
|
|
||||||
----
|
|
||||||
|
|
||||||
[discrete]
|
|
||||||
[[product-check]]
|
|
||||||
=== Automatic product check
|
|
||||||
|
|
||||||
Since v7.14.0, the client performs a required product check before the first call.
|
|
||||||
This pre-flight product check allows the client to establish the version of Elasticsearch
|
|
||||||
that it is communicating with. The product check requires one additional HTTP request to
|
|
||||||
be sent to the server as part of the request pipeline before the main API call is sent.
|
|
||||||
In most cases, this will succeed during the very first API call that the client sends.
|
|
||||||
Once the product check completes, no further product check HTTP requests are sent for
|
|
||||||
subsequent API calls.
|
|
||||||
11
docs/doc_examples/00ad41bde67beac991534ae0e04b1296.asciidoc
Normal file
11
docs/doc_examples/00ad41bde67beac991534ae0e04b1296.asciidoc
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.indices.getDataStream({
|
||||||
|
name: "my-data-stream",
|
||||||
|
filter_path: "data_streams.indices.index_name",
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
@ -3,17 +3,11 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.esql.asyncQuery({
|
||||||
method: "POST",
|
format: "json",
|
||||||
path: "/_query/async",
|
query:
|
||||||
querystring: {
|
"\n FROM my-index-000001,cluster_one:my-index-000001,cluster_two:my-index*\n | STATS COUNT(http.response.status_code) BY user.id\n | LIMIT 2\n ",
|
||||||
format: "json",
|
include_ccs_metadata: true,
|
||||||
},
|
|
||||||
body: {
|
|
||||||
query:
|
|
||||||
"\n FROM my-index-000001,cluster_one:my-index-000001,cluster_two:my-index*\n | STATS COUNT(http.response.status_code) BY user.id\n | LIMIT 2\n ",
|
|
||||||
include_ccs_metadata: true,
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
|
|||||||
@ -3,23 +3,20 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.searchApplication.renderQuery({
|
||||||
method: "POST",
|
name: "my-app",
|
||||||
path: "/_application/search_application/my-app/_render_query",
|
params: {
|
||||||
body: {
|
query_string: "my first query",
|
||||||
params: {
|
text_fields: [
|
||||||
query_string: "my first query",
|
{
|
||||||
text_fields: [
|
name: "title",
|
||||||
{
|
boost: 5,
|
||||||
name: "title",
|
},
|
||||||
boost: 5,
|
{
|
||||||
},
|
name: "description",
|
||||||
{
|
boost: 1,
|
||||||
name: "description",
|
},
|
||||||
boost: 1,
|
],
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
|
|||||||
15
docs/doc_examples/0f028f71f04c1d569fab402869565a84.asciidoc
Normal file
15
docs/doc_examples/0f028f71f04c1d569fab402869565a84.asciidoc
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.indices.putSettings({
|
||||||
|
index: ".reindexed-v9-ml-anomalies-custom-example",
|
||||||
|
settings: {
|
||||||
|
index: {
|
||||||
|
number_of_replicas: "<original_number_of_replicas>",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
@ -3,18 +3,16 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.inference.streamInference({
|
||||||
method: "POST",
|
task_type: "chat_completion",
|
||||||
path: "/_inference/chat_completion/openai-completion/_stream",
|
inference_id: "openai-completion",
|
||||||
body: {
|
model: "gpt-4o",
|
||||||
model: "gpt-4o",
|
messages: [
|
||||||
messages: [
|
{
|
||||||
{
|
role: "user",
|
||||||
role: "user",
|
content: "What is Elastic?",
|
||||||
content: "What is Elastic?",
|
},
|
||||||
},
|
],
|
||||||
],
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
|
|||||||
11
docs/doc_examples/12adea5d76f73d94d80d42f53f67563f.asciidoc
Normal file
11
docs/doc_examples/12adea5d76f73d94d80d42f53f67563f.asciidoc
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.indices.addBlock({
|
||||||
|
index: ".ml-anomalies-custom-example",
|
||||||
|
block: "read_only",
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
25
docs/doc_examples/13d91782399ba1f291e103c18b5338cc.asciidoc
Normal file
25
docs/doc_examples/13d91782399ba1f291e103c18b5338cc.asciidoc
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.indices.createFrom({
|
||||||
|
source: "my-index",
|
||||||
|
dest: "my-new-index",
|
||||||
|
create_from: {
|
||||||
|
settings_override: {
|
||||||
|
index: {
|
||||||
|
number_of_shards: 5,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mappings_override: {
|
||||||
|
properties: {
|
||||||
|
field2: {
|
||||||
|
type: "boolean",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
10
docs/doc_examples/15ac33d641b376d9494075eb1f0d4066.asciidoc
Normal file
10
docs/doc_examples/15ac33d641b376d9494075eb1f0d4066.asciidoc
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.indices.cancelMigrateReindex({
|
||||||
|
index: "my-data-stream",
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
12
docs/doc_examples/174b93c323aa8e9cc8ee2a3df5736810.asciidoc
Normal file
12
docs/doc_examples/174b93c323aa8e9cc8ee2a3df5736810.asciidoc
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.security.delegatePki({
|
||||||
|
x509_certificate_chain: [
|
||||||
|
"MIIDeDCCAmCgAwIBAgIUBzj/nGGKxP2iXawsSquHmQjCJmMwDQYJKoZIhvcNAQELBQAwUzErMCkGA1UEAxMiRWxhc3RpY3NlYXJjaCBUZXN0IEludGVybWVkaWF0ZSBDQTEWMBQGA1UECxMNRWxhc3RpY3NlYXJjaDEMMAoGA1UEChMDb3JnMB4XDTIzMDcxODE5MjkwNloXDTQzMDcxMzE5MjkwNlowSjEiMCAGA1UEAxMZRWxhc3RpY3NlYXJjaCBUZXN0IENsaWVudDEWMBQGA1UECxMNRWxhc3RpY3NlYXJjaDEMMAoGA1UEChMDb3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAllHL4pQkkfwAm/oLkxYYO+r950DEy1bjH+4viCHzNADLCTWO+lOZJVlNx7QEzJE3QGMdif9CCBBxQFMapA7oUFCLq84fPSQQu5AnvvbltVD9nwVtCs+9ZGDjMKsz98RhSLMFIkxdxi6HkQ3Lfa4ZSI4lvba4oo+T/GveazBDS+NgmKyq00EOXt3tWi1G9vEVItommzXWfv0agJWzVnLMldwkPqsw0W7zrpyT7FZS4iLbQADGceOW8fiauOGMkscu9zAnDR/SbWl/chYioQOdw6ndFLn1YIFPd37xL0WsdsldTpn0vH3YfzgLMffT/3P6YlwBegWzsx6FnM/93Ecb4wIDAQABo00wSzAJBgNVHRMEAjAAMB0GA1UdDgQWBBQKNRwjW+Ad/FN1Rpoqme/5+jrFWzAfBgNVHSMEGDAWgBRcya0c0x/PaI7MbmJVIylWgLqXNjANBgkqhkiG9w0BAQsFAAOCAQEACZ3PF7Uqu47lplXHP6YlzYL2jL0D28hpj5lGtdha4Muw1m/BjDb0Pu8l0NQ1z3AP6AVcvjNDkQq6Y5jeSz0bwQlealQpYfo7EMXjOidrft1GbqOMFmTBLpLA9SvwYGobSTXWTkJzonqVaTcf80HpMgM2uEhodwTcvz6v1WEfeT/HMjmdIsq4ImrOL9RNrcZG6nWfw0HR3JNOgrbfyEztEI471jHznZ336OEcyX7gQuvHE8tOv5+oD1d7s3Xg1yuFp+Ynh+FfOi3hPCuaHA+7F6fLmzMDLVUBAllugst1C3U+L/paD7tqIa4ka+KNPCbSfwazmJrt4XNiivPR4hwH5g==",
|
||||||
|
],
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
@ -3,27 +3,23 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.simulate.ingest({
|
||||||
method: "POST",
|
docs: [
|
||||||
path: "/_ingest/_simulate",
|
{
|
||||||
body: {
|
_index: "my-index",
|
||||||
docs: [
|
_id: "123",
|
||||||
{
|
_source: {
|
||||||
_index: "my-index",
|
foo: "bar",
|
||||||
_id: "123",
|
|
||||||
_source: {
|
|
||||||
foo: "bar",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
{
|
},
|
||||||
_index: "my-index",
|
{
|
||||||
_id: "456",
|
_index: "my-index",
|
||||||
_source: {
|
_id: "456",
|
||||||
foo: "rab",
|
_source: {
|
||||||
},
|
foo: "rab",
|
||||||
},
|
},
|
||||||
],
|
},
|
||||||
},
|
],
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
|
|||||||
19
docs/doc_examples/1ead35c954963e83f89872048dabdbe9.asciidoc
Normal file
19
docs/doc_examples/1ead35c954963e83f89872048dabdbe9.asciidoc
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.security.queryRole({
|
||||||
|
query: {
|
||||||
|
bool: {
|
||||||
|
must_not: {
|
||||||
|
term: {
|
||||||
|
"metadata._reserved": true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
sort: ["name"],
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
11
docs/doc_examples/272e27bf1fcc4fe5dbd4092679dd0342.asciidoc
Normal file
11
docs/doc_examples/272e27bf1fcc4fe5dbd4092679dd0342.asciidoc
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.indices.addBlock({
|
||||||
|
index: ".ml-anomalies-custom-example",
|
||||||
|
block: "write",
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
15
docs/doc_examples/29aeabacb1fdf5b083d5f091b6d1bd44.asciidoc
Normal file
15
docs/doc_examples/29aeabacb1fdf5b083d5f091b6d1bd44.asciidoc
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.indices.migrateReindex({
|
||||||
|
reindex: {
|
||||||
|
source: {
|
||||||
|
index: "my-data-stream",
|
||||||
|
},
|
||||||
|
mode: "upgrade",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
@ -3,14 +3,10 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.security.oidcLogout({
|
||||||
method: "POST",
|
token:
|
||||||
path: "/_security/oidc/logout",
|
"dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ==",
|
||||||
body: {
|
refresh_token: "vLBPvmAB6KvwvJZr27cS",
|
||||||
token:
|
|
||||||
"dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ==",
|
|
||||||
refresh_token: "vLBPvmAB6KvwvJZr27cS",
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
|
|||||||
@ -6,13 +6,13 @@
|
|||||||
const response = await client.indices.create({
|
const response = await client.indices.create({
|
||||||
index: "test-index",
|
index: "test-index",
|
||||||
query: {
|
query: {
|
||||||
semantic: {
|
match: {
|
||||||
field: "my_semantic_field",
|
my_field: "Which country is Paris in?",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
highlight: {
|
highlight: {
|
||||||
fields: {
|
fields: {
|
||||||
my_semantic_field: {
|
my_field: {
|
||||||
type: "semantic",
|
type: "semantic",
|
||||||
number_of_fragments: 2,
|
number_of_fragments: 2,
|
||||||
order: "score",
|
order: "score",
|
||||||
@ -3,12 +3,9 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.esql.asyncQueryGet({
|
||||||
method: "GET",
|
id: "FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=",
|
||||||
path: "/_query/async/FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=",
|
wait_for_completion_timeout: "30s",
|
||||||
querystring: {
|
|
||||||
wait_for_completion_timeout: "30s",
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
|
|||||||
22
docs/doc_examples/2f9ee29fe49f7d206a41212aa5945296.asciidoc
Normal file
22
docs/doc_examples/2f9ee29fe49f7d206a41212aa5945296.asciidoc
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.indices.createFrom({
|
||||||
|
source: "my-index",
|
||||||
|
dest: "my-new-index",
|
||||||
|
create_from: {
|
||||||
|
settings_override: {
|
||||||
|
index: {
|
||||||
|
"blocks.write": null,
|
||||||
|
"blocks.read": null,
|
||||||
|
"blocks.read_only": null,
|
||||||
|
"blocks.read_only_allow_delete": null,
|
||||||
|
"blocks.metadata": null,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
28
docs/doc_examples/31832bd71c31c46a1ccf8d1c210d89d4.asciidoc
Normal file
28
docs/doc_examples/31832bd71c31c46a1ccf8d1c210d89d4.asciidoc
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.search({
|
||||||
|
index: "my-index-*",
|
||||||
|
query: {
|
||||||
|
bool: {
|
||||||
|
must: [
|
||||||
|
{
|
||||||
|
match: {
|
||||||
|
"user.id": "kimchy",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
must_not: [
|
||||||
|
{
|
||||||
|
terms: {
|
||||||
|
_index: ["my-index-01"],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
31
docs/doc_examples/32c8c86702ccd68eb70f1573409c2a1f.asciidoc
Normal file
31
docs/doc_examples/32c8c86702ccd68eb70f1573409c2a1f.asciidoc
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.ilm.putLifecycle({
|
||||||
|
name: "my_policy",
|
||||||
|
policy: {
|
||||||
|
phases: {
|
||||||
|
hot: {
|
||||||
|
actions: {
|
||||||
|
rollover: {
|
||||||
|
max_primary_shard_size: "50gb",
|
||||||
|
},
|
||||||
|
searchable_snapshot: {
|
||||||
|
snapshot_repository: "backing_repo",
|
||||||
|
replicate_for: "14d",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
delete: {
|
||||||
|
min_age: "28d",
|
||||||
|
actions: {
|
||||||
|
delete: {},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
21
docs/doc_examples/3649194a97d265a3bc758f8b38f7561e.asciidoc
Normal file
21
docs/doc_examples/3649194a97d265a3bc758f8b38f7561e.asciidoc
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.indices.create({
|
||||||
|
index: "semantic-embeddings",
|
||||||
|
mappings: {
|
||||||
|
properties: {
|
||||||
|
semantic_text: {
|
||||||
|
type: "semantic_text",
|
||||||
|
},
|
||||||
|
content: {
|
||||||
|
type: "text",
|
||||||
|
copy_to: "semantic_text",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
@ -9,10 +9,13 @@ const response = await client.search({
|
|||||||
retriever: {
|
retriever: {
|
||||||
rescorer: {
|
rescorer: {
|
||||||
rescore: {
|
rescore: {
|
||||||
|
window_size: 50,
|
||||||
query: {
|
query: {
|
||||||
window_size: 50,
|
|
||||||
rescore_query: {
|
rescore_query: {
|
||||||
script_score: {
|
script_score: {
|
||||||
|
query: {
|
||||||
|
match_all: {},
|
||||||
|
},
|
||||||
script: {
|
script: {
|
||||||
source:
|
source:
|
||||||
"cosineSimilarity(params.queryVector, 'product-vector_final_stage') + 1.0",
|
"cosineSimilarity(params.queryVector, 'product-vector_final_stage') + 1.0",
|
||||||
23
docs/doc_examples/3722dad876023e0757138dd5a6d3240e.asciidoc
Normal file
23
docs/doc_examples/3722dad876023e0757138dd5a6d3240e.asciidoc
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.indices.create({
|
||||||
|
index: "my-index",
|
||||||
|
settings: {
|
||||||
|
index: {
|
||||||
|
number_of_shards: 3,
|
||||||
|
"blocks.write": true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mappings: {
|
||||||
|
properties: {
|
||||||
|
field1: {
|
||||||
|
type: "text",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
19
docs/doc_examples/3a204b57072a104d9b50f3a9e064a8f6.asciidoc
Normal file
19
docs/doc_examples/3a204b57072a104d9b50f3a9e064a8f6.asciidoc
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.search({
|
||||||
|
index: ".ml-anomalies-custom-example",
|
||||||
|
size: 0,
|
||||||
|
aggs: {
|
||||||
|
job_ids: {
|
||||||
|
terms: {
|
||||||
|
field: "job_id",
|
||||||
|
size: 100,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
61
docs/doc_examples/3bc4a3681e3ea9cb3de49f72085807d8.asciidoc
Normal file
61
docs/doc_examples/3bc4a3681e3ea9cb3de49f72085807d8.asciidoc
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.search({
|
||||||
|
index: "retrievers_example",
|
||||||
|
retriever: {
|
||||||
|
linear: {
|
||||||
|
retrievers: [
|
||||||
|
{
|
||||||
|
retriever: {
|
||||||
|
standard: {
|
||||||
|
query: {
|
||||||
|
function_score: {
|
||||||
|
query: {
|
||||||
|
term: {
|
||||||
|
topic: "ai",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
functions: [
|
||||||
|
{
|
||||||
|
script_score: {
|
||||||
|
script: {
|
||||||
|
source: "doc['timestamp'].value.millis",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
boost_mode: "replace",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
sort: {
|
||||||
|
timestamp: {
|
||||||
|
order: "asc",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
weight: 2,
|
||||||
|
normalizer: "minmax",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
retriever: {
|
||||||
|
knn: {
|
||||||
|
field: "vector",
|
||||||
|
query_vector: [0.23, 0.67, 0.89],
|
||||||
|
k: 3,
|
||||||
|
num_candidates: 5,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
weight: 1.5,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
rank_window_size: 10,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
_source: false,
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
@ -3,14 +3,10 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.esql.asyncQuery({
|
||||||
method: "POST",
|
query:
|
||||||
path: "/_query/async",
|
"\n FROM library\n | EVAL year = DATE_TRUNC(1 YEARS, release_date)\n | STATS MAX(page_count) BY year\n | SORT year\n | LIMIT 5\n ",
|
||||||
body: {
|
wait_for_completion_timeout: "2s",
|
||||||
query:
|
|
||||||
"\n FROM library\n | EVAL year = DATE_TRUNC(1 YEARS, release_date)\n | STATS MAX(page_count) BY year\n | SORT year\n | LIMIT 5\n ",
|
|
||||||
wait_for_completion_timeout: "2s",
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
|
|||||||
@ -3,9 +3,8 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.esql.asyncQueryGet({
|
||||||
method: "GET",
|
id: "FkpMRkJGS1gzVDRlM3g4ZzMyRGlLbkEaTXlJZHdNT09TU2VTZVBoNDM3cFZMUToxMDM=",
|
||||||
path: "/_query/async/FkpMRkJGS1gzVDRlM3g4ZzMyRGlLbkEaTXlJZHdNT09TU2VTZVBoNDM3cFZMUToxMDM=",
|
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
|
|||||||
@ -3,43 +3,41 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.inference.streamInference({
|
||||||
method: "POST",
|
task_type: "chat_completion",
|
||||||
path: "/_inference/chat_completion/openai-completion/_stream",
|
inference_id: "openai-completion",
|
||||||
body: {
|
messages: [
|
||||||
messages: [
|
{
|
||||||
{
|
role: "user",
|
||||||
role: "user",
|
content: [
|
||||||
content: [
|
{
|
||||||
{
|
type: "text",
|
||||||
type: "text",
|
text: "What's the price of a scarf?",
|
||||||
text: "What's the price of a scarf?",
|
},
|
||||||
},
|
],
|
||||||
],
|
},
|
||||||
},
|
],
|
||||||
],
|
tools: [
|
||||||
tools: [
|
{
|
||||||
{
|
type: "function",
|
||||||
type: "function",
|
function: {
|
||||||
function: {
|
name: "get_current_price",
|
||||||
name: "get_current_price",
|
description: "Get the current price of a item",
|
||||||
description: "Get the current price of a item",
|
parameters: {
|
||||||
parameters: {
|
type: "object",
|
||||||
type: "object",
|
properties: {
|
||||||
properties: {
|
item: {
|
||||||
item: {
|
id: "123",
|
||||||
id: "123",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
},
|
||||||
tool_choice: {
|
],
|
||||||
type: "function",
|
tool_choice: {
|
||||||
function: {
|
type: "function",
|
||||||
name: "get_current_price",
|
function: {
|
||||||
},
|
name: "get_current_price",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
10
docs/doc_examples/46b771a9932c3fa6057a7b2679c72ef0.asciidoc
Normal file
10
docs/doc_examples/46b771a9932c3fa6057a7b2679c72ef0.asciidoc
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.indices.getMigrateReindexStatus({
|
||||||
|
index: "my-data-stream",
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
@ -6,6 +6,11 @@
|
|||||||
const response = await client.ml.startTrainedModelDeployment({
|
const response = await client.ml.startTrainedModelDeployment({
|
||||||
model_id: "my_model",
|
model_id: "my_model",
|
||||||
deployment_id: "my_model_for_search",
|
deployment_id: "my_model_for_search",
|
||||||
|
adaptive_allocations: {
|
||||||
|
enabled: true,
|
||||||
|
min_number_of_allocations: 3,
|
||||||
|
max_number_of_allocations: 10,
|
||||||
|
},
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
|
|||||||
@ -3,12 +3,10 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.inference.streamInference({
|
||||||
method: "POST",
|
task_type: "completion",
|
||||||
path: "/_inference/completion/openai-completion/_stream",
|
inference_id: "openai-completion",
|
||||||
body: {
|
input: "What is Elastic?",
|
||||||
input: "What is Elastic?",
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
|
|||||||
17
docs/doc_examples/4de4bb55bbc0a76c75d256f245a3ee3f.asciidoc
Normal file
17
docs/doc_examples/4de4bb55bbc0a76c75d256f245a3ee3f.asciidoc
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.inference.put({
|
||||||
|
task_type: "sparse_embedding",
|
||||||
|
inference_id: "elser-model-eis",
|
||||||
|
inference_config: {
|
||||||
|
service: "elastic",
|
||||||
|
service_settings: {
|
||||||
|
model_name: "elser",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
12
docs/doc_examples/537bce129338d9227bccb6a0283dab45.asciidoc
Normal file
12
docs/doc_examples/537bce129338d9227bccb6a0283dab45.asciidoc
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.cluster.putSettings({
|
||||||
|
persistent: {
|
||||||
|
"migrate.data_stream_reindex_max_request_per_second": 10000,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
@ -3,14 +3,10 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.security.oidcPrepareAuthentication({
|
||||||
method: "POST",
|
realm: "oidc1",
|
||||||
path: "/_security/oidc/prepare",
|
state: "lGYK0EcSLjqH6pkT5EVZjC6eIW5YCGgywj2sxROO",
|
||||||
body: {
|
nonce: "zOBXLJGUooRrbLbQk5YCcyC8AXw3iloynvluYhZ5",
|
||||||
realm: "oidc1",
|
|
||||||
state: "lGYK0EcSLjqH6pkT5EVZjC6eIW5YCGgywj2sxROO",
|
|
||||||
nonce: "zOBXLJGUooRrbLbQk5YCcyC8AXw3iloynvluYhZ5",
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
|
|||||||
10
docs/doc_examples/59aa5216630f80c5dc298fc5bba4a819.asciidoc
Normal file
10
docs/doc_examples/59aa5216630f80c5dc298fc5bba4a819.asciidoc
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.indices.getSettings({
|
||||||
|
index: ".reindexed-v9-ml-anomalies-custom-example",
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
@ -3,17 +3,11 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.esql.asyncQuery({
|
||||||
method: "POST",
|
format: "json",
|
||||||
path: "/_query/async",
|
query:
|
||||||
querystring: {
|
"\n FROM cluster_one:my-index*,cluster_two:logs*\n | STATS COUNT(http.response.status_code) BY user.id\n | LIMIT 2\n ",
|
||||||
format: "json",
|
include_ccs_metadata: true,
|
||||||
},
|
|
||||||
body: {
|
|
||||||
query:
|
|
||||||
"\n FROM cluster_one:my-index*,cluster_two:logs*\n | STATS COUNT(http.response.status_code) BY user.id\n | LIMIT 2\n ",
|
|
||||||
include_ccs_metadata: true,
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
|
|||||||
11
docs/doc_examples/615dc36f0978c676624fb7d1144b4899.asciidoc
Normal file
11
docs/doc_examples/615dc36f0978c676624fb7d1144b4899.asciidoc
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.indices.getDataLifecycleStats({
|
||||||
|
human: "true",
|
||||||
|
pretty: "true",
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
12
docs/doc_examples/66915e95b723ee2f6e5164a94b8f98c1.asciidoc
Normal file
12
docs/doc_examples/66915e95b723ee2f6e5164a94b8f98c1.asciidoc
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.indices.createFrom({
|
||||||
|
source: "my-index",
|
||||||
|
dest: "my-new-index",
|
||||||
|
create_from: null,
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
10
docs/doc_examples/67b71a95b6fe6c83faae51ea038a1bf1.asciidoc
Normal file
10
docs/doc_examples/67b71a95b6fe6c83faae51ea038a1bf1.asciidoc
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.esql.asyncQueryDelete({
|
||||||
|
id: "FmdMX2pIang3UWhLRU5QS0lqdlppYncaMUpYQ05oSkpTc3kwZ21EdC1tbFJXQToxOTI=",
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
23
docs/doc_examples/6baf72c04d48cb04c2f8be609ff3b3b5.asciidoc
Normal file
23
docs/doc_examples/6baf72c04d48cb04c2f8be609ff3b3b5.asciidoc
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.search({
|
||||||
|
index: "test-index",
|
||||||
|
query: {
|
||||||
|
match: {
|
||||||
|
my_semantic_field: "Which country is Paris in?",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
highlight: {
|
||||||
|
fields: {
|
||||||
|
my_semantic_field: {
|
||||||
|
number_of_fragments: 2,
|
||||||
|
order: "score",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
16
docs/doc_examples/6e498b9dc753b94abf2618c407fa5cd8.asciidoc
Normal file
16
docs/doc_examples/6e498b9dc753b94abf2618c407fa5cd8.asciidoc
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.reindex({
|
||||||
|
wait_for_completion: "false",
|
||||||
|
source: {
|
||||||
|
index: ".ml-anomalies-custom-example",
|
||||||
|
},
|
||||||
|
dest: {
|
||||||
|
index: ".reindexed-v9-ml-anomalies-custom-example",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
@ -3,12 +3,8 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.security.bulkUpdateApiKeys({
|
||||||
method: "POST",
|
ids: ["VuaCfGcBCdbkQm-e5aOx", "H3_AhoIBA9hmeQJdg7ij"],
|
||||||
path: "/_security/api_key/_bulk_update",
|
|
||||||
body: {
|
|
||||||
ids: ["VuaCfGcBCdbkQm-e5aOx", "H3_AhoIBA9hmeQJdg7ij"],
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
|
|||||||
@ -3,35 +3,31 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.textStructure.findMessageStructure({
|
||||||
method: "POST",
|
messages: [
|
||||||
path: "/_text_structure/find_message_structure",
|
"[2024-03-05T10:52:36,256][INFO ][o.a.l.u.VectorUtilPanamaProvider] [laptop] Java vector incubator API enabled; uses preferredBitSize=128",
|
||||||
body: {
|
"[2024-03-05T10:52:41,038][INFO ][o.e.p.PluginsService ] [laptop] loaded module [repository-url]",
|
||||||
messages: [
|
"[2024-03-05T10:52:41,042][INFO ][o.e.p.PluginsService ] [laptop] loaded module [rest-root]",
|
||||||
"[2024-03-05T10:52:36,256][INFO ][o.a.l.u.VectorUtilPanamaProvider] [laptop] Java vector incubator API enabled; uses preferredBitSize=128",
|
"[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService ] [laptop] loaded module [x-pack-core]",
|
||||||
"[2024-03-05T10:52:41,038][INFO ][o.e.p.PluginsService ] [laptop] loaded module [repository-url]",
|
"[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService ] [laptop] loaded module [x-pack-redact]",
|
||||||
"[2024-03-05T10:52:41,042][INFO ][o.e.p.PluginsService ] [laptop] loaded module [rest-root]",
|
"[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService ] [laptop] loaded module [ingest-user-agent]",
|
||||||
"[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService ] [laptop] loaded module [x-pack-core]",
|
"[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService ] [laptop] loaded module [x-pack-monitoring]",
|
||||||
"[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService ] [laptop] loaded module [x-pack-redact]",
|
"[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService ] [laptop] loaded module [repository-s3]",
|
||||||
"[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService ] [laptop] loaded module [ingest-user-agent]",
|
"[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService ] [laptop] loaded module [x-pack-analytics]",
|
||||||
"[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService ] [laptop] loaded module [x-pack-monitoring]",
|
"[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService ] [laptop] loaded module [x-pack-ent-search]",
|
||||||
"[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService ] [laptop] loaded module [repository-s3]",
|
"[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService ] [laptop] loaded module [x-pack-autoscaling]",
|
||||||
"[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService ] [laptop] loaded module [x-pack-analytics]",
|
"[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService ] [laptop] loaded module [lang-painless]]",
|
||||||
"[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService ] [laptop] loaded module [x-pack-ent-search]",
|
"[2024-03-05T10:52:41,059][INFO ][o.e.p.PluginsService ] [laptop] loaded module [lang-expression]",
|
||||||
"[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService ] [laptop] loaded module [x-pack-autoscaling]",
|
"[2024-03-05T10:52:41,059][INFO ][o.e.p.PluginsService ] [laptop] loaded module [x-pack-eql]",
|
||||||
"[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService ] [laptop] loaded module [lang-painless]]",
|
"[2024-03-05T10:52:43,291][INFO ][o.e.e.NodeEnvironment ] [laptop] heap size [16gb], compressed ordinary object pointers [true]",
|
||||||
"[2024-03-05T10:52:41,059][INFO ][o.e.p.PluginsService ] [laptop] loaded module [lang-expression]",
|
"[2024-03-05T10:52:46,098][INFO ][o.e.x.s.Security ] [laptop] Security is enabled",
|
||||||
"[2024-03-05T10:52:41,059][INFO ][o.e.p.PluginsService ] [laptop] loaded module [x-pack-eql]",
|
"[2024-03-05T10:52:47,227][INFO ][o.e.x.p.ProfilingPlugin ] [laptop] Profiling is enabled",
|
||||||
"[2024-03-05T10:52:43,291][INFO ][o.e.e.NodeEnvironment ] [laptop] heap size [16gb], compressed ordinary object pointers [true]",
|
"[2024-03-05T10:52:47,259][INFO ][o.e.x.p.ProfilingPlugin ] [laptop] profiling index templates will not be installed or reinstalled",
|
||||||
"[2024-03-05T10:52:46,098][INFO ][o.e.x.s.Security ] [laptop] Security is enabled",
|
"[2024-03-05T10:52:47,755][INFO ][o.e.i.r.RecoverySettings ] [laptop] using rate limit [40mb] with [default=40mb, read=0b, write=0b, max=0b]",
|
||||||
"[2024-03-05T10:52:47,227][INFO ][o.e.x.p.ProfilingPlugin ] [laptop] Profiling is enabled",
|
"[2024-03-05T10:52:47,787][INFO ][o.e.d.DiscoveryModule ] [laptop] using discovery type [multi-node] and seed hosts providers [settings]",
|
||||||
"[2024-03-05T10:52:47,259][INFO ][o.e.x.p.ProfilingPlugin ] [laptop] profiling index templates will not be installed or reinstalled",
|
"[2024-03-05T10:52:49,188][INFO ][o.e.n.Node ] [laptop] initialized",
|
||||||
"[2024-03-05T10:52:47,755][INFO ][o.e.i.r.RecoverySettings ] [laptop] using rate limit [40mb] with [default=40mb, read=0b, write=0b, max=0b]",
|
"[2024-03-05T10:52:49,199][INFO ][o.e.n.Node ] [laptop] starting ...",
|
||||||
"[2024-03-05T10:52:47,787][INFO ][o.e.d.DiscoveryModule ] [laptop] using discovery type [multi-node] and seed hosts providers [settings]",
|
],
|
||||||
"[2024-03-05T10:52:49,188][INFO ][o.e.n.Node ] [laptop] initialized",
|
|
||||||
"[2024-03-05T10:52:49,199][INFO ][o.e.n.Node ] [laptop] starting ...",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
|
|||||||
@ -3,9 +3,8 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.ingest.deleteIpLocationDatabase({
|
||||||
method: "DELETE",
|
id: "my-database-id",
|
||||||
path: "/_ingest/ip_location/database/my-database-id",
|
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
|
|||||||
@ -3,30 +3,26 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.security.bulkUpdateApiKeys({
|
||||||
method: "POST",
|
ids: ["VuaCfGcBCdbkQm-e5aOx", "H3_AhoIBA9hmeQJdg7ij"],
|
||||||
path: "/_security/api_key/_bulk_update",
|
role_descriptors: {
|
||||||
body: {
|
"role-a": {
|
||||||
ids: ["VuaCfGcBCdbkQm-e5aOx", "H3_AhoIBA9hmeQJdg7ij"],
|
indices: [
|
||||||
role_descriptors: {
|
{
|
||||||
"role-a": {
|
names: ["*"],
|
||||||
indices: [
|
privileges: ["write"],
|
||||||
{
|
},
|
||||||
names: ["*"],
|
],
|
||||||
privileges: ["write"],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
metadata: {
|
|
||||||
environment: {
|
|
||||||
level: 2,
|
|
||||||
trusted: true,
|
|
||||||
tags: ["production"],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
expiration: "30d",
|
|
||||||
},
|
},
|
||||||
|
metadata: {
|
||||||
|
environment: {
|
||||||
|
level: 2,
|
||||||
|
trusted: true,
|
||||||
|
tags: ["production"],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
expiration: "30d",
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
|
|||||||
@ -3,32 +3,30 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.inference.streamInference({
|
||||||
method: "POST",
|
task_type: "chat_completion",
|
||||||
path: "/_inference/chat_completion/openai-completion/_stream",
|
inference_id: "openai-completion",
|
||||||
body: {
|
messages: [
|
||||||
messages: [
|
{
|
||||||
{
|
role: "assistant",
|
||||||
role: "assistant",
|
content: "Let's find out what the weather is",
|
||||||
content: "Let's find out what the weather is",
|
tool_calls: [
|
||||||
tool_calls: [
|
{
|
||||||
{
|
id: "call_KcAjWtAww20AihPHphUh46Gd",
|
||||||
id: "call_KcAjWtAww20AihPHphUh46Gd",
|
type: "function",
|
||||||
type: "function",
|
function: {
|
||||||
function: {
|
name: "get_current_weather",
|
||||||
name: "get_current_weather",
|
arguments: '{"location":"Boston, MA"}',
|
||||||
arguments: '{"location":"Boston, MA"}',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
],
|
},
|
||||||
},
|
],
|
||||||
{
|
},
|
||||||
role: "tool",
|
{
|
||||||
content: "The weather is cold",
|
role: "tool",
|
||||||
tool_call_id: "call_KcAjWtAww20AihPHphUh46Gd",
|
content: "The weather is cold",
|
||||||
},
|
tool_call_id: "call_KcAjWtAww20AihPHphUh46Gd",
|
||||||
],
|
},
|
||||||
},
|
],
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
|
|||||||
15
docs/doc_examples/8621c05cc7cf3880bde751f6670a0c3a.asciidoc
Normal file
15
docs/doc_examples/8621c05cc7cf3880bde751f6670a0c3a.asciidoc
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.indices.putSettings({
|
||||||
|
index: ".reindexed-v9-ml-anomalies-custom-example",
|
||||||
|
settings: {
|
||||||
|
index: {
|
||||||
|
number_of_replicas: 0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
12
docs/doc_examples/89f547649895176c246bb8c41313ff21.asciidoc
Normal file
12
docs/doc_examples/89f547649895176c246bb8c41313ff21.asciidoc
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.esql.query({
|
||||||
|
query:
|
||||||
|
'\nFROM library\n| EVAL year = DATE_EXTRACT("year", release_date)\n| WHERE page_count > ? AND match(author, ?, {"minimum_should_match": ?})\n| LIMIT 5\n',
|
||||||
|
params: [300, "Frank Herbert", 2],
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
10
docs/doc_examples/8c47c80139f40f25db44f5781ca2dfbe.asciidoc
Normal file
10
docs/doc_examples/8c47c80139f40f25db44f5781ca2dfbe.asciidoc
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.indices.getAlias({
|
||||||
|
index: ".ml-anomalies-custom-example",
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
@ -3,10 +3,9 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.ingest.putIpLocationDatabase({
|
||||||
method: "PUT",
|
id: "my-database-1",
|
||||||
path: "/_ingest/ip_location/database/my-database-1",
|
configuration: {
|
||||||
body: {
|
|
||||||
name: "GeoIP2-Domain",
|
name: "GeoIP2-Domain",
|
||||||
maxmind: {
|
maxmind: {
|
||||||
account_id: "1234567",
|
account_id: "1234567",
|
||||||
|
|||||||
@ -3,8 +3,6 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.security.queryRole({
|
const response = await client.indices.resolveCluster();
|
||||||
sort: ["name"],
|
|
||||||
});
|
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
@ -3,9 +3,8 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.ingest.deleteIpLocationDatabase({
|
||||||
method: "DELETE",
|
id: "example-database-id",
|
||||||
path: "/_ingest/ip_location/database/example-database-id",
|
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
|
|||||||
@ -3,10 +3,10 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.searchApplication.postBehavioralAnalyticsEvent({
|
||||||
method: "POST",
|
collection_name: "my_analytics_collection",
|
||||||
path: "/_application/analytics/my_analytics_collection/event/search_click",
|
event_type: "search_click",
|
||||||
body: {
|
payload: {
|
||||||
session: {
|
session: {
|
||||||
id: "1797ca95-91c9-4e2e-b1bd-9c38e6f386a9",
|
id: "1797ca95-91c9-4e2e-b1bd-9c38e6f386a9",
|
||||||
},
|
},
|
||||||
|
|||||||
@ -3,16 +3,12 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.security.oidcAuthenticate({
|
||||||
method: "POST",
|
redirect_uri:
|
||||||
path: "/_security/oidc/authenticate",
|
"https://oidc-kibana.elastic.co:5603/api/security/oidc/callback?code=jtI3Ntt8v3_XvcLzCFGq&state=4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
|
||||||
body: {
|
state: "4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
|
||||||
redirect_uri:
|
nonce: "WaBPH0KqPVdG5HHdSxPRjfoZbXMCicm5v1OiAj0DUFM",
|
||||||
"https://oidc-kibana.elastic.co:5603/api/security/oidc/callback?code=jtI3Ntt8v3_XvcLzCFGq&state=4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
|
realm: "oidc1",
|
||||||
state: "4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
|
|
||||||
nonce: "WaBPH0KqPVdG5HHdSxPRjfoZbXMCicm5v1OiAj0DUFM",
|
|
||||||
realm: "oidc1",
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
|
|||||||
@ -3,13 +3,10 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.searchApplication.renderQuery({
|
||||||
method: "POST",
|
name: "my_search_application",
|
||||||
path: "/_application/search_application/my_search_application/_render_query",
|
params: {
|
||||||
body: {
|
query_string: "rock climbing",
|
||||||
params: {
|
|
||||||
query_string: "rock climbing",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
|
|||||||
12
docs/doc_examples/a46f566ca031375658c22f89b87dc6d2.asciidoc
Normal file
12
docs/doc_examples/a46f566ca031375658c22f89b87dc6d2.asciidoc
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.cat.indices({
|
||||||
|
index: ".ml-anomalies-custom-example",
|
||||||
|
v: "true",
|
||||||
|
h: "index,store.size",
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
10
docs/doc_examples/a60aaed30d7d26eaacbb2c0ed4ddc66d.asciidoc
Normal file
10
docs/doc_examples/a60aaed30d7d26eaacbb2c0ed4ddc66d.asciidoc
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.indices.cancelMigrateReindex({
|
||||||
|
index: "my-data-stream",
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
12
docs/doc_examples/a675fafa7c688cb3ea1be09bf887ebf0.asciidoc
Normal file
12
docs/doc_examples/a675fafa7c688cb3ea1be09bf887ebf0.asciidoc
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.indices.get({
|
||||||
|
index: ".migrated-ds-my-data-stream-2025.01.23-000001",
|
||||||
|
human: "true",
|
||||||
|
filter_path: "*.settings.index.version.created_string",
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
10
docs/doc_examples/adced6e22ef03c2ae3b14aa5bdd24fd9.asciidoc
Normal file
10
docs/doc_examples/adced6e22ef03c2ae3b14aa5bdd24fd9.asciidoc
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.indices.getMigrateReindexStatus({
|
||||||
|
index: "my-data-stream",
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
@ -3,9 +3,8 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.searchApplication.renderQuery({
|
||||||
method: "POST",
|
name: "my_search_application",
|
||||||
path: "/_application/search_application/my_search_application/_render_query",
|
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
|
|||||||
10
docs/doc_examples/b1e81b70b874a1f0cf75a0ec6e430ddc.asciidoc
Normal file
10
docs/doc_examples/b1e81b70b874a1f0cf75a0ec6e430ddc.asciidoc
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.esql.asyncQueryStop({
|
||||||
|
id: "FkpMRkJGS1gzVDRlM3g4ZzMyRGlLbkEaTXlJZHdNT09TU2VTZVBoNDM3cFZMUToxMDM=",
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
@ -208,13 +208,9 @@ const response = await client.bulk({
|
|||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
|
|
||||||
const response1 = await client.transport.request({
|
const response1 = await client.textStructure.findFieldStructure({
|
||||||
method: "GET",
|
index: "test-logs",
|
||||||
path: "/_text_structure/find_field_structure",
|
field: "message",
|
||||||
querystring: {
|
|
||||||
index: "test-logs",
|
|
||||||
field: "message",
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
console.log(response1);
|
console.log(response1);
|
||||||
----
|
----
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
const response = await client.indices.resolveCluster({
|
const response = await client.indices.resolveCluster({
|
||||||
name: "not-present,clust*:my-index*,oldcluster:*",
|
name: "not-present,clust*:my-index*,oldcluster:*",
|
||||||
ignore_unavailable: "false",
|
ignore_unavailable: "false",
|
||||||
|
timeout: "5s",
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
@ -6,15 +6,11 @@
|
|||||||
const response = await client.update({
|
const response = await client.update({
|
||||||
index: "test",
|
index: "test",
|
||||||
id: 1,
|
id: 1,
|
||||||
script: {
|
doc: {
|
||||||
source: "ctx._source.counter += params.count",
|
product_price: 100,
|
||||||
lang: "painless",
|
|
||||||
params: {
|
|
||||||
count: 4,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
upsert: {
|
upsert: {
|
||||||
counter: 1,
|
product_price: 50,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
@ -3,36 +3,32 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.simulate.ingest({
|
||||||
method: "POST",
|
docs: [
|
||||||
path: "/_ingest/_simulate",
|
{
|
||||||
body: {
|
_index: "my-index",
|
||||||
docs: [
|
_id: "123",
|
||||||
{
|
_source: {
|
||||||
_index: "my-index",
|
foo: "bar",
|
||||||
_id: "123",
|
|
||||||
_source: {
|
|
||||||
foo: "bar",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
{
|
},
|
||||||
_index: "my-index",
|
{
|
||||||
_id: "456",
|
_index: "my-index",
|
||||||
_source: {
|
_id: "456",
|
||||||
foo: "rab",
|
_source: {
|
||||||
},
|
foo: "rab",
|
||||||
},
|
},
|
||||||
],
|
},
|
||||||
pipeline_substitutions: {
|
],
|
||||||
"my-pipeline": {
|
pipeline_substitutions: {
|
||||||
processors: [
|
"my-pipeline": {
|
||||||
{
|
processors: [
|
||||||
uppercase: {
|
{
|
||||||
field: "foo",
|
uppercase: {
|
||||||
},
|
field: "foo",
|
||||||
},
|
},
|
||||||
],
|
},
|
||||||
},
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
11
docs/doc_examples/c3b77e11b16e37e9e37e28dec922432e.asciidoc
Normal file
11
docs/doc_examples/c3b77e11b16e37e9e37e28dec922432e.asciidoc
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.esql.query({
|
||||||
|
query:
|
||||||
|
'\nFROM library\n| WHERE match(author, "Frank Herbert", {"minimum_should_match": 2, "operator": "AND"})\n| LIMIT 5\n',
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
@ -3,13 +3,9 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.security.bulkUpdateApiKeys({
|
||||||
method: "POST",
|
ids: ["VuaCfGcBCdbkQm-e5aOx", "H3_AhoIBA9hmeQJdg7ij"],
|
||||||
path: "/_security/api_key/_bulk_update",
|
role_descriptors: {},
|
||||||
body: {
|
|
||||||
ids: ["VuaCfGcBCdbkQm-e5aOx", "H3_AhoIBA9hmeQJdg7ij"],
|
|
||||||
role_descriptors: {},
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
|
|||||||
@ -3,69 +3,65 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.simulate.ingest({
|
||||||
method: "POST",
|
docs: [
|
||||||
path: "/_ingest/_simulate",
|
{
|
||||||
body: {
|
_index: "my-index",
|
||||||
docs: [
|
_id: "id",
|
||||||
{
|
_source: {
|
||||||
_index: "my-index",
|
foo: "bar",
|
||||||
_id: "id",
|
|
||||||
_source: {
|
|
||||||
foo: "bar",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
_index: "my-index",
|
|
||||||
_id: "id",
|
|
||||||
_source: {
|
|
||||||
foo: "rab",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
pipeline_substitutions: {
|
|
||||||
"my-pipeline": {
|
|
||||||
processors: [
|
|
||||||
{
|
|
||||||
set: {
|
|
||||||
field: "field3",
|
|
||||||
value: "value3",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
component_template_substitutions: {
|
{
|
||||||
"my-component-template": {
|
_index: "my-index",
|
||||||
template: {
|
_id: "id",
|
||||||
mappings: {
|
_source: {
|
||||||
dynamic: "true",
|
foo: "rab",
|
||||||
properties: {
|
},
|
||||||
field3: {
|
},
|
||||||
type: "keyword",
|
],
|
||||||
},
|
pipeline_substitutions: {
|
||||||
|
"my-pipeline": {
|
||||||
|
processors: [
|
||||||
|
{
|
||||||
|
set: {
|
||||||
|
field: "field3",
|
||||||
|
value: "value3",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
component_template_substitutions: {
|
||||||
|
"my-component-template": {
|
||||||
|
template: {
|
||||||
|
mappings: {
|
||||||
|
dynamic: "true",
|
||||||
|
properties: {
|
||||||
|
field3: {
|
||||||
|
type: "keyword",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
settings: {
|
},
|
||||||
index: {
|
settings: {
|
||||||
default_pipeline: "my-pipeline",
|
index: {
|
||||||
},
|
default_pipeline: "my-pipeline",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
index_template_substitutions: {
|
},
|
||||||
"my-index-template": {
|
index_template_substitutions: {
|
||||||
index_patterns: ["my-index-*"],
|
"my-index-template": {
|
||||||
composed_of: ["component_template_1", "component_template_2"],
|
index_patterns: ["my-index-*"],
|
||||||
},
|
composed_of: ["component_template_1", "component_template_2"],
|
||||||
},
|
},
|
||||||
mapping_addition: {
|
},
|
||||||
dynamic: "strict",
|
mapping_addition: {
|
||||||
properties: {
|
dynamic: "strict",
|
||||||
foo: {
|
properties: {
|
||||||
type: "keyword",
|
foo: {
|
||||||
},
|
type: "keyword",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
11
docs/doc_examples/d2e7dead222cfbebbd2c21a7cc1893b4.asciidoc
Normal file
11
docs/doc_examples/d2e7dead222cfbebbd2c21a7cc1893b4.asciidoc
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.cluster.state({
|
||||||
|
metric: "metadata",
|
||||||
|
filter_path: "metadata.indices.*.system",
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
@ -3,13 +3,9 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.security.oidcPrepareAuthentication({
|
||||||
method: "POST",
|
iss: "http://127.0.0.1:8080",
|
||||||
path: "/_security/oidc/prepare",
|
login_hint: "this_is_an_opaque_string",
|
||||||
body: {
|
|
||||||
iss: "http://127.0.0.1:8080",
|
|
||||||
login_hint: "this_is_an_opaque_string",
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
|
|||||||
44
docs/doc_examples/d3a0f648d0fd50b54a4e9ebe363c5047.asciidoc
Normal file
44
docs/doc_examples/d3a0f648d0fd50b54a4e9ebe363c5047.asciidoc
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.search({
|
||||||
|
index: "retrievers_example",
|
||||||
|
retriever: {
|
||||||
|
linear: {
|
||||||
|
retrievers: [
|
||||||
|
{
|
||||||
|
retriever: {
|
||||||
|
standard: {
|
||||||
|
query: {
|
||||||
|
query_string: {
|
||||||
|
query: "(information retrieval) OR (artificial intelligence)",
|
||||||
|
default_field: "text",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
weight: 2,
|
||||||
|
normalizer: "minmax",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
retriever: {
|
||||||
|
knn: {
|
||||||
|
field: "vector",
|
||||||
|
query_vector: [0.23, 0.67, 0.89],
|
||||||
|
k: 3,
|
||||||
|
num_candidates: 5,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
weight: 1.5,
|
||||||
|
normalizer: "minmax",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
rank_window_size: 10,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
_source: false,
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
@ -3,10 +3,9 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.ingest.putIpLocationDatabase({
|
||||||
method: "PUT",
|
id: "my-database-2",
|
||||||
path: "/_ingest/ip_location/database/my-database-2",
|
configuration: {
|
||||||
body: {
|
|
||||||
name: "standard_location",
|
name: "standard_location",
|
||||||
ipinfo: {},
|
ipinfo: {},
|
||||||
},
|
},
|
||||||
|
|||||||
17
docs/doc_examples/d6a4548b29e939fb197189c20c7c016f.asciidoc
Normal file
17
docs/doc_examples/d6a4548b29e939fb197189c20c7c016f.asciidoc
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.inference.put({
|
||||||
|
task_type: "chat_completion",
|
||||||
|
inference_id: "chat-completion-endpoint",
|
||||||
|
inference_config: {
|
||||||
|
service: "elastic",
|
||||||
|
service_settings: {
|
||||||
|
model_id: "model-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
@ -3,9 +3,8 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.ingest.getIpLocationDatabase({
|
||||||
method: "GET",
|
id: "my-database-id",
|
||||||
path: "/_ingest/ip_location/database/my-database-id",
|
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
|
|||||||
57
docs/doc_examples/dd16c9c981551c9da47ebb5ef5105fa0.asciidoc
Normal file
57
docs/doc_examples/dd16c9c981551c9da47ebb5ef5105fa0.asciidoc
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.indices.updateAliases({
|
||||||
|
actions: [
|
||||||
|
{
|
||||||
|
add: {
|
||||||
|
index: ".reindexed-v9-ml-anomalies-custom-example",
|
||||||
|
alias: ".ml-anomalies-example1",
|
||||||
|
filter: {
|
||||||
|
term: {
|
||||||
|
job_id: {
|
||||||
|
value: "example1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
is_hidden: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
add: {
|
||||||
|
index: ".reindexed-v9-ml-anomalies-custom-example",
|
||||||
|
alias: ".ml-anomalies-example2",
|
||||||
|
filter: {
|
||||||
|
term: {
|
||||||
|
job_id: {
|
||||||
|
value: "example2",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
is_hidden: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
remove: {
|
||||||
|
index: ".ml-anomalies-custom-example",
|
||||||
|
aliases: ".ml-anomalies-*",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
remove_index: {
|
||||||
|
index: ".ml-anomalies-custom-example",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
add: {
|
||||||
|
index: ".reindexed-v9-ml-anomalies-custom-example",
|
||||||
|
alias: ".ml-anomalies-custom-example",
|
||||||
|
is_hidden: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
@ -3,9 +3,6 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.security.getSettings();
|
||||||
method: "GET",
|
|
||||||
path: "/_security/settings",
|
|
||||||
});
|
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
|
|||||||
14
docs/doc_examples/dde92fdf3469349ffe2c81764333543a.asciidoc
Normal file
14
docs/doc_examples/dde92fdf3469349ffe2c81764333543a.asciidoc
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.indices.createFrom({
|
||||||
|
source: "my-index",
|
||||||
|
dest: "my-new-index",
|
||||||
|
create_from: {
|
||||||
|
remove_index_blocks: false,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
@ -3,12 +3,8 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.security.oidcPrepareAuthentication({
|
||||||
method: "POST",
|
realm: "oidc1",
|
||||||
path: "/_security/oidc/prepare",
|
|
||||||
body: {
|
|
||||||
realm: "oidc1",
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
|
|||||||
@ -3,38 +3,34 @@
|
|||||||
|
|
||||||
[source, js]
|
[source, js]
|
||||||
----
|
----
|
||||||
const response = await client.transport.request({
|
const response = await client.simulate.ingest({
|
||||||
method: "POST",
|
docs: [
|
||||||
path: "/_ingest/_simulate",
|
{
|
||||||
body: {
|
_index: "my-index",
|
||||||
docs: [
|
_id: "123",
|
||||||
{
|
_source: {
|
||||||
_index: "my-index",
|
foo: "foo",
|
||||||
_id: "123",
|
|
||||||
_source: {
|
|
||||||
foo: "foo",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
{
|
},
|
||||||
_index: "my-index",
|
{
|
||||||
_id: "456",
|
_index: "my-index",
|
||||||
_source: {
|
_id: "456",
|
||||||
bar: "rab",
|
_source: {
|
||||||
},
|
bar: "rab",
|
||||||
},
|
},
|
||||||
],
|
},
|
||||||
component_template_substitutions: {
|
],
|
||||||
"my-mappings_template": {
|
component_template_substitutions: {
|
||||||
template: {
|
"my-mappings_template": {
|
||||||
mappings: {
|
template: {
|
||||||
dynamic: "strict",
|
mappings: {
|
||||||
properties: {
|
dynamic: "strict",
|
||||||
foo: {
|
properties: {
|
||||||
type: "keyword",
|
foo: {
|
||||||
},
|
type: "keyword",
|
||||||
bar: {
|
},
|
||||||
type: "keyword",
|
bar: {
|
||||||
},
|
type: "keyword",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
10
docs/doc_examples/e715fb8c792bf09ac98f0ceca99beb84.asciidoc
Normal file
10
docs/doc_examples/e715fb8c792bf09ac98f0ceca99beb84.asciidoc
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.migration.deprecations({
|
||||||
|
index: ".ml-anomalies-*",
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
12
docs/doc_examples/ec135f0cc0d3f526df68000b2a95c65b.asciidoc
Normal file
12
docs/doc_examples/ec135f0cc0d3f526df68000b2a95c65b.asciidoc
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
// This file is autogenerated, DO NOT EDIT
|
||||||
|
// Use `node scripts/generate-docs-examples.js` to generate the docs examples
|
||||||
|
|
||||||
|
[source, js]
|
||||||
|
----
|
||||||
|
const response = await client.indices.createFrom({
|
||||||
|
source: ".ml-anomalies-custom-example",
|
||||||
|
dest: ".reindexed-v9-ml-anomalies-custom-example",
|
||||||
|
create_from: null,
|
||||||
|
});
|
||||||
|
console.log(response);
|
||||||
|
----
|
||||||
@ -30,6 +30,13 @@ const response = await client.search({
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
highlight: {
|
||||||
|
fields: {
|
||||||
|
semantic_text: {
|
||||||
|
number_of_fragments: 2,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
});
|
});
|
||||||
console.log(response);
|
console.log(response);
|
||||||
----
|
----
|
||||||
@ -28,6 +28,9 @@ const response = await client.indices.create({
|
|||||||
topic: {
|
topic: {
|
||||||
type: "keyword",
|
type: "keyword",
|
||||||
},
|
},
|
||||||
|
timestamp: {
|
||||||
|
type: "date",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@ -41,6 +44,7 @@ const response1 = await client.index({
|
|||||||
text: "Large language models are revolutionizing information retrieval by boosting search precision, deepening contextual understanding, and reshaping user experiences in data-rich environments.",
|
text: "Large language models are revolutionizing information retrieval by boosting search precision, deepening contextual understanding, and reshaping user experiences in data-rich environments.",
|
||||||
year: 2024,
|
year: 2024,
|
||||||
topic: ["llm", "ai", "information_retrieval"],
|
topic: ["llm", "ai", "information_retrieval"],
|
||||||
|
timestamp: "2021-01-01T12:10:30",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
console.log(response1);
|
console.log(response1);
|
||||||
@ -53,6 +57,7 @@ const response2 = await client.index({
|
|||||||
text: "Artificial intelligence is transforming medicine, from advancing diagnostics and tailoring treatment plans to empowering predictive patient care for improved health outcomes.",
|
text: "Artificial intelligence is transforming medicine, from advancing diagnostics and tailoring treatment plans to empowering predictive patient care for improved health outcomes.",
|
||||||
year: 2023,
|
year: 2023,
|
||||||
topic: ["ai", "medicine"],
|
topic: ["ai", "medicine"],
|
||||||
|
timestamp: "2022-01-01T12:10:30",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
console.log(response2);
|
console.log(response2);
|
||||||
@ -65,6 +70,7 @@ const response3 = await client.index({
|
|||||||
text: "AI is redefining security by enabling advanced threat detection, proactive risk analysis, and dynamic defenses against increasingly sophisticated cyber threats.",
|
text: "AI is redefining security by enabling advanced threat detection, proactive risk analysis, and dynamic defenses against increasingly sophisticated cyber threats.",
|
||||||
year: 2024,
|
year: 2024,
|
||||||
topic: ["ai", "security"],
|
topic: ["ai", "security"],
|
||||||
|
timestamp: "2023-01-01T12:10:30",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
console.log(response3);
|
console.log(response3);
|
||||||
@ -77,6 +83,7 @@ const response4 = await client.index({
|
|||||||
text: "Elastic introduces Elastic AI Assistant, the open, generative AI sidekick powered by ESRE to democratize cybersecurity and enable users of every skill level.",
|
text: "Elastic introduces Elastic AI Assistant, the open, generative AI sidekick powered by ESRE to democratize cybersecurity and enable users of every skill level.",
|
||||||
year: 2023,
|
year: 2023,
|
||||||
topic: ["ai", "elastic", "assistant"],
|
topic: ["ai", "elastic", "assistant"],
|
||||||
|
timestamp: "2024-01-01T12:10:30",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
console.log(response4);
|
console.log(response4);
|
||||||
@ -89,6 +96,7 @@ const response5 = await client.index({
|
|||||||
text: "Learn how to spin up a deployment of our hosted Elasticsearch Service and use Elastic Observability to gain deeper insight into the behavior of your applications and systems.",
|
text: "Learn how to spin up a deployment of our hosted Elasticsearch Service and use Elastic Observability to gain deeper insight into the behavior of your applications and systems.",
|
||||||
year: 2024,
|
year: 2024,
|
||||||
topic: ["documentation", "observability", "elastic"],
|
topic: ["documentation", "observability", "elastic"],
|
||||||
|
timestamp: "2025-01-01T12:10:30",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
console.log(response5);
|
console.log(response5);
|
||||||
12
docs/docset.yml
Normal file
12
docs/docset.yml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
project: 'Node.js client'
|
||||||
|
exclude:
|
||||||
|
- examples/proxy/README.md
|
||||||
|
cross_links:
|
||||||
|
- docs-content
|
||||||
|
- elasticsearch
|
||||||
|
toc:
|
||||||
|
- toc: reference
|
||||||
|
- toc: release-notes
|
||||||
|
subs:
|
||||||
|
stack: "Elastic Stack"
|
||||||
|
es: "Elasticsearch"
|
||||||
@ -1,34 +0,0 @@
|
|||||||
[[examples]]
|
|
||||||
== Examples
|
|
||||||
|
|
||||||
Following you can find some examples on how to use the client.
|
|
||||||
|
|
||||||
* Use of the <<as_stream_examples,asStream>> parameter;
|
|
||||||
* Executing a <<bulk_examples,bulk>> request;
|
|
||||||
* Executing a <<exists_examples,exists>> request;
|
|
||||||
* Executing a <<get_examples,get>> request;
|
|
||||||
* Executing a <<sql_query_examples,sql.query>> request;
|
|
||||||
* Executing a <<update_examples,update>> request;
|
|
||||||
* Executing a <<update_by_query_examples,update by query>> request;
|
|
||||||
* Executing a <<reindex_examples,reindex>> request;
|
|
||||||
* Use of the <<ignore_examples,ignore>> parameter;
|
|
||||||
* Executing a <<msearch_examples,msearch>> request;
|
|
||||||
* How do I <<scroll_examples,scroll>>?
|
|
||||||
* Executing a <<search_examples,search>> request;
|
|
||||||
* I need <<suggest_examples,suggestions>>;
|
|
||||||
* How to use the <<transport_request_examples,transport.request>> method;
|
|
||||||
|
|
||||||
include::asStream.asciidoc[]
|
|
||||||
include::bulk.asciidoc[]
|
|
||||||
include::exists.asciidoc[]
|
|
||||||
include::get.asciidoc[]
|
|
||||||
include::ignore.asciidoc[]
|
|
||||||
include::msearch.asciidoc[]
|
|
||||||
include::scroll.asciidoc[]
|
|
||||||
include::search.asciidoc[]
|
|
||||||
include::suggest.asciidoc[]
|
|
||||||
include::transport.request.asciidoc[]
|
|
||||||
include::sql.query.asciidoc[]
|
|
||||||
include::update.asciidoc[]
|
|
||||||
include::update_by_query.asciidoc[]
|
|
||||||
include::reindex.asciidoc[]
|
|
||||||
@ -1,20 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Licensed to Elasticsearch B.V. under one or more contributor
|
* Copyright Elasticsearch B.V. and contributors
|
||||||
* license agreements. See the NOTICE file distributed with
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
* this work for additional information regarding copyright
|
|
||||||
* ownership. Elasticsearch B.V. licenses this file to you under
|
|
||||||
* the Apache License, Version 2.0 (the "License"); you may
|
|
||||||
* not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing,
|
|
||||||
* software distributed under the License is distributed on an
|
|
||||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
||||||
* KIND, either express or implied. See the License for the
|
|
||||||
* specific language governing permissions and limitations
|
|
||||||
* under the License.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// IMPORTANT: this is not a production ready code & purely for demonstration purposes,
|
// IMPORTANT: this is not a production ready code & purely for demonstration purposes,
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user