快速入门指南
编辑快速入门指南编辑
本指南帮助您学习如何
- 运行 Elasticsearch 和 Kibana(使用 Elastic Cloud 或在本地 Docker 开发环境中),
- 将简单(非时间戳)数据集添加到 Elasticsearch,
- 运行基本搜索。
如果您有兴趣将 Elasticsearch 与 Python 一起使用,请查看 Elastic Search Labs。这是探索人工智能驱动搜索用例的最佳场所,例如使用嵌入、向量搜索和检索增强生成 (RAG)。
- 教程:本教程将引导您从头开始使用 Elasticsearch 构建完整的搜索解决方案。
-
elasticsearch-labs
存储库:它包含一系列 Python 笔记本 和 示例应用程序。
运行 Elasticsearch编辑
设置 Elasticsearch 的最简单方法是在 Elastic Cloud 上使用 Elasticsearch Service 创建托管部署。如果您更喜欢管理自己的测试环境,请使用 Docker 安装和运行 Elasticsearch。
- 获取免费试用.
- 登录 Elastic Cloud。
- 点击 创建部署。
- 为您的部署命名。
- 点击 创建部署 并下载
elastic
用户的密码。 - 点击 继续 打开 Kibana,Elastic Cloud 的用户界面。
- 点击 自行探索。
请参阅我们的 快速入门本地开发说明,以在 Docker 中快速启动本地开发环境。如果您不需要 Kibana,则只需一个 docker run
命令即可启动 Elasticsearch。请注意,此设置 不适合生产环境。
向 Elasticsearch 发送请求编辑
您可以使用 REST API 向 Elasticsearch 发送数据和其他请求。这使您可以使用任何发送 HTTP 请求的客户端(例如 curl)与 Elasticsearch 进行交互。您还可以使用 Kibana 的控制台向 Elasticsearch 发送请求。
使用 Kibana
使用 curl
要使用 curl 或其他客户端与 Elasticsearch 通信,您需要集群的端点。
- 打开 Kibana 的主菜单,然后点击 管理此部署。
- 在您的部署菜单中,转到 Elasticsearch 页面。点击 复制端点。
-
要提交示例 API 请求,请在新终端会话中运行以下 curl 命令。将
<password>
替换为elastic
用户的密码。将<elasticsearch_endpoint>
替换为您的端点。curl -u elastic:<password> <elasticsearch_endpoint>/
使用 Kibana
使用 curl
要提交示例 API 请求,请在新终端会话中运行以下 curl 命令。
curl -u elastic:$ELASTIC_PASSWORD https://127.0.0.1:9200
添加数据编辑
您将数据作为称为文档的 JSON 对象添加到 Elasticsearch。Elasticsearch 将这些文档存储在可搜索的索引中。
添加单个文档编辑
提交以下索引请求以将单个文档添加到 books
索引。该请求会自动创建索引。
response = client.index( index: 'books', body: { name: 'Snow Crash', author: 'Neal Stephenson', release_date: '1992-06-01', page_count: 470 } ) puts response
const response = await client.index({ index: 'books', document: { name: 'Snow Crash', author: 'Neal Stephenson', release_date: '1992-06-01', page_count: 470, } }) console.log(response)
POST books/_doc {"name": "Snow Crash", "author": "Neal Stephenson", "release_date": "1992-06-01", "page_count": 470}
响应包括 Elasticsearch 为文档生成的元数据,包括文档在索引中的唯一 _id
。
展开以查看示例响应
添加多个文档编辑
使用 _bulk
端点在一个请求中添加多个文档。批量数据必须是换行符分隔的 JSON (NDJSON)。每行都必须以换行符 (\n
) 结尾,包括最后一行。
response = client.bulk( body: [ { 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 } ] ) puts response
const response = await client.bulk({ operations: [ { 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, } ] }) console.log(response)
POST /_bulk { "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}
您应该会收到一个指示没有错误的响应。
展开以查看示例响应
{ "errors": false, "took": 29, "items": [ { "index": { "_index": "books", "_id": "QklI2IsBaSa7VYx_Qkh-", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 2, "failed": 0 }, "_seq_no": 1, "_primary_term": 1, "status": 201 } }, { "index": { "_index": "books", "_id": "Q0lI2IsBaSa7VYx_Qkh-", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 2, "failed": 0 }, "_seq_no": 2, "_primary_term": 1, "status": 201 } }, { "index": { "_index": "books", "_id": "RElI2IsBaSa7VYx_Qkh-", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 2, "failed": 0 }, "_seq_no": 3, "_primary_term": 1, "status": 201 } }, { "index": { "_index": "books", "_id": "RUlI2IsBaSa7VYx_Qkh-", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 2, "failed": 0 }, "_seq_no": 4, "_primary_term": 1, "status": 201 } }, { "index": { "_index": "books", "_id": "RklI2IsBaSa7VYx_Qkh-", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 2, "failed": 0 }, "_seq_no": 5, "_primary_term": 1, "status": 201 } } ] }
搜索数据编辑
索引文档可供近乎实时地进行搜索。
搜索所有文档编辑
运行以下命令以搜索 books
索引中的所有文档
response = client.search( index: 'books' ) puts response
const response = await client.search({ index: 'books' }) console.log(response)
GET books/_search
每个匹配结果的 _source
包含索引期间提交的原始 JSON 对象。
match
查询编辑
您可以使用 match
查询来搜索特定字段中包含特定值的文档。这是执行全文搜索的标准查询,包括模糊匹配和短语搜索。
运行以下命令以搜索 books
索引中 name
字段包含 brave
的文档
response = client.search( index: 'books', body: { query: { match: { name: 'brave' } } } ) puts response
const response = await client.search({ index: 'books', query: { match: { name: 'brave' } } }) console.log(response)
GET books/_search { "query": { "match": { "name": "brave" } } }
后续步骤编辑
现在 Elasticsearch 已启动并运行,并且您已经了解了基础知识,您可能想要测试更大的数据集或索引您自己的数据。
详细了解搜索查询编辑
添加更多数据编辑
Elasticsearch 编程语言客户端编辑
- 查看我们的 客户端库,以使用您喜欢的编程语言处理您的 Elasticsearch 实例。
-
如果您使用的是 Python,请查看 Elastic Search Labs,了解使用 Elasticsearch Python 客户端的各种示例。这是探索人工智能驱动搜索用例的最佳场所,例如使用嵌入、向量搜索和检索增强生成 (RAG)。
- 这个内容丰富的动手 教程 将引导您从头开始使用 Elasticsearch 构建完整的搜索解决方案。
-
elasticsearch-labs
包含一系列可执行的 Python 笔记本 和 示例应用程序。