Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updates Get started page #183

Merged
merged 36 commits into from
Nov 19, 2024
Merged
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
c3b534d
Updates Get started page
kosabogi Nov 8, 2024
fe6e543
Updating serverless docs (#172)
georgewallace Nov 11, 2024
ae4cbb0
[Serverless] Adds Trained model autoscaling page (#139)
kosabogi Nov 12, 2024
a390bdc
Updates Get started to align with the new user flow
kosabogi Nov 12, 2024
cab06c9
Update serverless/pages/get-started.asciidoc
kosabogi Nov 13, 2024
b7fd129
Update serverless/pages/get-started.asciidoc
kosabogi Nov 13, 2024
0384cfd
Resolves comments
kosabogi Nov 13, 2024
e441ee7
Modifies Get started guide, renames and updates Create a new API key …
kosabogi Nov 14, 2024
1832321
Update serverless/pages/connecting-to-es-endpoint.asciidoc
kosabogi Nov 14, 2024
4d69b0f
Update serverless/pages/connecting-to-es-endpoint.asciidoc
kosabogi Nov 14, 2024
ce03fa6
Update serverless/pages/connecting-to-es-endpoint.asciidoc
kosabogi Nov 14, 2024
5e0aedf
Update serverless/pages/connecting-to-es-endpoint.asciidoc
kosabogi Nov 14, 2024
7e92800
Update serverless/pages/connecting-to-es-endpoint.asciidoc
kosabogi Nov 14, 2024
dd1f8d6
Update serverless/pages/connecting-to-es-endpoint.asciidoc
kosabogi Nov 14, 2024
6d97fe6
Adds details about alternative methods
kosabogi Nov 18, 2024
0845b96
Updates structure
kosabogi Nov 18, 2024
9aba6f8
Merge remote-tracking branch 'origin/main' into update-get-started-page
kosabogi Nov 18, 2024
1b2bb53
Merge branch 'main' into update-get-started-page
kosabogi Nov 18, 2024
14c9f3e
Revert id
leemthompo Nov 18, 2024
0bea4a1
fix other instance
leemthompo Nov 18, 2024
660097d
Update serverless/pages/get-started.asciidoc
kosabogi Nov 18, 2024
1b20770
Update serverless/pages/get-started.asciidoc
kosabogi Nov 18, 2024
6572cbc
Update serverless/pages/get-started.asciidoc
kosabogi Nov 18, 2024
fe511c5
Update serverless/pages/connecting-to-es-endpoint.asciidoc
kosabogi Nov 18, 2024
f4c851b
Update serverless/pages/get-started.asciidoc
kosabogi Nov 18, 2024
9ce292b
Updates page
kosabogi Nov 19, 2024
6f814c7
Update serverless/pages/get-started.asciidoc
kosabogi Nov 19, 2024
31bc23b
Update serverless/pages/get-started.asciidoc
kosabogi Nov 19, 2024
d6005f7
Update serverless/pages/get-started.asciidoc
kosabogi Nov 19, 2024
2b83622
Update serverless/pages/get-started.asciidoc
kosabogi Nov 19, 2024
97ef301
Update serverless/pages/get-started.asciidoc
kosabogi Nov 19, 2024
2c5ca93
Update serverless/pages/get-started.asciidoc
kosabogi Nov 19, 2024
4d4c7cd
Update serverless/pages/get-started.asciidoc
kosabogi Nov 19, 2024
dcedf12
Final fixes
kosabogi Nov 19, 2024
5dfa344
Update serverless/pages/connecting-to-es-endpoint.asciidoc
kosabogi Nov 19, 2024
36dd995
Update serverless/pages/get-started.asciidoc
kosabogi Nov 19, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added serverless/images/copy-connection-details.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added serverless/images/create-an-api-key.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added serverless/images/getting-started-page.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions serverless/index-serverless-elasticsearch.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ include::./pages/pricing.asciidoc[leveloffset=+2]

include::./pages/get-started.asciidoc[leveloffset=+2]

include::./pages/connecting-to-es-endpoint.asciidoc[leveloffset=+2]

include::./pages/clients.asciidoc[leveloffset=+2]
include::./pages/clients-go-getting-started.asciidoc[leveloffset=+3]
include::./pages/clients-java-getting-started.asciidoc[leveloffset=+3]
Expand Down
85 changes: 85 additions & 0 deletions serverless/pages/connecting-to-es-endpoint.asciidoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
[[elasticsearch-connecting-to-es-serverless-endpoint]]
= Connecting to your Elasticsearch Serverless endpoint

Learn how to securely connect to your Elasticsearch Serverless instance.

To connect to your Elasticsearch instance from your applications, client libraries, or tools like `curl`, you'll need two key pieces of information: an API key and your endpoint URL. This guide shows you how to get these connection details and verify they work.
[discrete]
[[elasticsearch-create-new-api-key]]
== Create a new API key

Create an API key to authenticate your requests to the {es} APIs. You'll need an API key for all API requests and client connections.

To create a new API key:

. On the **Getting Started** page, scroll to **Add an API Key** and select **New**. You can also search for *API keys* in the https://www.elastic.co/guide/en/kibana/current/kibana-concepts-analysts.html#_finding_your_apps_and_objects[global search field].
+
image::images/create-an-api-key.png[Create an API key.]
. In **Create API Key**, enter a name for your key and (optionally) set an expiration date.
. (Optional) Under **Control Security privileges**, you can set specific access permissions for this API key. By default, it has full access to all APIs.
. (Optional) The **Add metadata** section allows you to add custom key-value pairs to help identify and organize your API keys.
. Select **Create API Key** to finish.

After creation, you'll see your API key displayed as an encoded string.
Store this encoded API key securely. It is displayed only once and cannot be retrieved later.
You will use this encoded API key when sending API requests.

[NOTE]
====
You can't recover or retrieve a lost API key. Instead, you must delete the key and create a new one.
====

[discrete]
[[elasticsearch-get-started-endpoint]]
== Get your {es} endpoint URL

The endpoint URL is the address for your {es} instance.
You'll use this URL together with your API key to make requests to the {es} APIs.
To find the endpoint URL:


. On the **Getting Started** page, scroll to **Copy your connection details** section, and find the **Elasticsearch endpoint** field.
. Copy the URL for the Elasticsearch endpoint.

image::images/copy-connection-details.png[Copy your Elasticsearch endpoint.]

[discrete]
[[elasticsearch-get-started-test-connection]]
== Test connection

Use https://curl.se[`curl`] to verify your connection to {es}.

`curl` will need access to your Elasticsearch endpoint and `encoded` API key.
Within your terminal, assign these values to the `ES_URL` and `API_KEY` environment variables.

For example:

[source,bash]
----
export ES_URL="https://dda7de7f1d264286a8fc9741c7741690.es.us-east-1.aws.elastic.cloud:443"
export API_KEY="ZFZRbF9Jb0JDMEoxaVhoR2pSa3Q6dExwdmJSaldRTHFXWEp4TFFlR19Hdw=="
----

Then run the following command to test your connection:

[source,bash]
----
curl "${ES_URL}" \
-H "Authorization: ApiKey ${API_KEY}" \
-H "Content-Type: application/json"
----

You should receive a response similar to the following:

[source,json]
----
{
"name" : "serverless",
"cluster_name" : "dda7de7f1d264286a8fc9741c7741690",
"cluster_uuid" : "ws0IbTBUQfigmYAVMztkZQ",
"version" : { ... },
"tagline" : "You Know, for Search"
}
----

Now you're ready to ingest and search some sample documents.
245 changes: 44 additions & 201 deletions serverless/pages/get-started.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -6,246 +6,89 @@

preview:[]

Follow along to set up your {es-serverless} project and get started with some sample documents.
Then, choose how to continue with your own data.
Follow along to set up your {es} project and get started with some sample documents.

[discrete]
[[elasticsearch-get-started-create-project]]
== Create project

Use your {ecloud} account to create a fully-managed {es-serverless} project:
Use your {ecloud} account to create a fully-managed {es} project:

. Navigate to {ess-console}[cloud.elastic.co] and create a new account or log in to your existing account.
. Within **Serverless Projects**, choose **Create project**.
. Choose the {es-serverless} project type.
. Choose the {es} project type.
. Select a **configuration** for your project, based on your use case.
+
** **General purpose**. For general search use cases across various data types.
** **Optimized for Vectors**. For search use cases using vectors and near real-time retrieval.
** **General purpose**: For general search use cases across various data types.
** **Optimized for Vectors**: For search use cases using vectors and near real-time retrieval.
. Provide a name for the project and optionally edit the project settings, such as the cloud platform <<regions,region>>.
Select **Create project** to continue.
. Once the project is ready, select **Continue**.

You should now see **Get started with {es-serverless}**, and you're ready to continue.

include::../partials/minimum-vcus-detail.asciidoc[]

[discrete]
[[elasticsearch-get-started-create-api-key]]
== Create API key

Create an API key, which will enable you to access the {es-serverless} API to ingest and search data.

. On the **Getting Started** page, scroll to **Add an API Key** and select **New**.
. In **Create API Key**, enter a name for your key and (optionally) set an expiration date.
. (Optional) Under **Control Security privileges**, you can set specific access permissions for this API key. By default, it has full access to all APIs.
. (Optional) The **Add metadata** section allows you to add custom key-value pairs to help identify and organize your API keys.
. Select **Create API Key** to finish.

After creation, you'll see your API key displayed as an encoded string.
Store this encoded API key securely. It is displayed only once and cannot be retrieved later.
You will use this encoded API key when sending API requests.

[NOTE]
====
You can't recover or retrieve a lost API key. Instead, you must delete the key and create a new one.
====

[discrete]
[[elasticsearch-get-started-copy-url]]
== Copy URL

Next, copy the URL of your API endpoint.
You'll send all {es-serverless} API requests to this URL.

. On the **Getting Started** page, scroll to **Copy your connection details** section, and find the **{es} endpoint** field.
. Copy the URL for the {es} endpoint.

Store this value along with your `encoded` API key.
You'll use both values in the next step.
Now your project is ready to start creating indices, adding data, and performing searches. You can choose one of the following options to proceed.

[discrete]
[[elasticsearch-get-started-test-connection]]
== Test connection
[[elasticsearch-follow-guided-index-flowt]]
== Option 1 - Follow the guided index flow

We'll use the `curl` command to test your connection and make additional API requests.
(See https://everything.curl.dev/get[Install curl] if you need to install this program.)
Once your project is set up, you'll be directed to a page where you can create your first index.
An index is where documents are stored and organized, making it possible to search and retrieve data.

`curl` will need access to your {es} endpoint and `encoded` API key.
Within your terminal, assign these values to the `ES_URL` and `API_KEY` environment variables.

For example:

[source,bash]
----
export ES_URL="https://dda7de7f1d264286a8fc9741c7741690.es.us-east-1.aws.elastic.cloud:443"
export API_KEY="ZFZRbF9Jb0JDMEoxaVhoR2pSa3Q6dExwdmJSaldRTHFXWEp4TFFlR19Hdw=="
----

Then run the following command to test your connection:

[source,bash]
----
curl "${ES_URL}" \
-H "Authorization: ApiKey ${API_KEY}" \
-H "Content-Type: application/json"
----

You should receive a response similar to the following:

[source,json]
----
{
"name" : "serverless",
"cluster_name" : "dda7de7f1d264286a8fc9741c7741690",
"cluster_uuid" : "ws0IbTBUQfigmYAVMztkZQ",
"version" : { ... },
"tagline" : "You Know, for Search"
}
----

Now you're ready to ingest and search some sample documents.
. Enter a name for your index.
. Click *Create my index*. You can also create the index by clicking on *Code* to view and run code through the command line.
+
image::images/get-started-create-an-index.png[Create an index.]

[discrete]
[[elasticsearch-get-started-ingest-data]]
== Ingest data
. You’ll be directed to the *Index Management* page. Here, copy and save the following:
- Elasticsearch URL
- API key

[NOTE]
====
This example uses {es} APIs to ingest data. If you'd prefer to upload a file using the UI, refer to <<elasticsearch-ingest-data-file-upload>>.
You won’t be able to view this API key again. If needed, refer to <<elasticsearch-create-new-api-key,Create a new API key>> to generate a new one.
====

To ingest data, you must create an index and store some documents.
This process is also called "indexing".

You can index multiple documents using a single `POST` request to the `_bulk` API endpoint.
The request body specifies the documents to store and the indices in which to store them.

{es} will automatically create the index and map each document value to one of its data types.
Include the `?pretty` option to receive a human-readable response.

Run the following command to index some sample documents into the `books` index:

[source,bash]
----
curl -X POST "${ES_URL}/_bulk?pretty" \
-H "Authorization: ApiKey ${API_KEY}" \
-H "Content-Type: application/json" \
-d '
{ "index" : { "_index" : "books" } }
{"name": "Snow Crash", "author": "Neal Stephenson", "release_date": "1992-06-01", "page_count": 470}
{ "index" : { "_index" : "books" } }
{"name": "Revelation Space", "author": "Alastair Reynolds", "release_date": "2000-03-15", "page_count": 585}
{ "index" : { "_index" : "books" } }
{"name": "1984", "author": "George Orwell", "release_date": "1985-06-01", "page_count": 328}
{ "index" : { "_index" : "books" } }
{"name": "Fahrenheit 451", "author": "Ray Bradbury", "release_date": "1953-10-15", "page_count": 227}
{ "index" : { "_index" : "books" } }
{"name": "Brave New World", "author": "Aldous Huxley", "release_date": "1932-06-01", "page_count": 268}
{ "index" : { "_index" : "books" } }
{"name": "The Handmaids Tale", "author": "Margaret Atwood", "release_date": "1985-06-01", "page_count": 311}
'
----

You should receive a response indicating there were no errors:

[source,json]
----
{
"errors" : false,
"took" : 1260,
"items" : [ ... ]
}
----
The UI provides ready-to-use code examples for ingesting data via the REST API.
Choose your preferred tool for making these requests:

[discrete]
[[elasticsearch-get-started-search-data]]
== Search data

To search, send a `POST` request to the `_search` endpoint, specifying the index to search.
Use the {es} query DSL to construct your request body.

Run the following command to search the `books` index for documents containing `snow`:

[source,bash]
----
curl -X POST "${ES_URL}/books/_search?pretty" \
-H "Authorization: ApiKey ${API_KEY}" \
-H "Content-Type: application/json" \
-d '
{
"query": {
"query_string": {
"query": "snow"
}
}
}
'
----

You should receive a response with the results:

[source,json]
----
{
"took" : 24,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 1.5904956,
"hits" : [
{
"_index" : "books",
"_id" : "Z3hf_IoBONQ5TXnpLdlY",
"_score" : 1.5904956,
"_source" : {
"name" : "Snow Crash",
"author" : "Neal Stephenson",
"release_date" : "1992-06-01",
"page_count" : 470
}
}
]
}
}
----
* Elastic Console in your project's UI
* Python
* JavaScript
* cURL

[discrete]
[[elasticsearch-get-started-continue-on-your-own]]
== Continue on your own
[[elasticsearch-follow-in-product-getting-started]]
== Option 2 - Follow the in-product Getting Started guide

Congratulations!
You've set up an {es-serverless} project, and you've ingested and searched some sample data.
Now you're ready to continue on your own.
Navigate to the *Getting Started* page and follow the steps provided on the UI.

[discrete]
[[elasticsearch-get-started-explore]]
=== Explore
image::images/getting-started-page.png[Getting Started page.]

Want to explore the sample documents or your own data?
[discrete]
[[elasticsearch-explore-on-your-own]]
== Option 3 - Explore on your own

By creating a data view, you can explore data using several UI tools, such as Discover or Dashboards. Or, use {es} aggregations to explore your data using the API. Find more information in <<elasticsearch-explore-your-data>>.
. Retrieve your <<elasticsearch-connecting-to-es-serverless-endpoint,connection details>>.
. Ingest your data. Elasticsearch provides several methods for ingesting data:
* <<elasticsearch-ingest-data-through-api,{es} API>>
* <<elasticsearch-ingest-data-through-integrations-connector-client,Connector clients>>
* <<elasticsearch-ingest-data-file-upload,File Uploader>>
* <<elasticsearch-ingest-data-through-beats,{beats}>>
* <<elasticsearch-ingest-data-through-logstash,{ls}>>
* https://github.com/elastic/crawler[Elastic Open Web Crawler]

[discrete]
[[elasticsearch-get-started-build]]
=== Build
For more information on data ingestion and synchronization,
see <<elasticsearch-ingest-your-data>>.

Ready to build your own solution?
Once your data is ingested, experiment with <<elasticsearch-playground,Playground>> to test queries and explore features.

To learn more about sending and syncing data to {es-serverless}, or the search API and its query DSL, check <<elasticsearch-ingest-your-data>> and <<elasticsearch-http-apis>>.
To learn about the search API and query DSL, refer to <<elasticsearch-http-apis>>.

////
/*
- <DocLink slug="/serverless/elasticsearch/search-your-data" />
- <DocLink slug="/serverless/elasticsearch/search-your-data-the-search-api" />
*/
////
////