Elasticsearch是什么Elasticsearch是一个分布式搜索和分析引擎也是可扩展的数据存储和向量数据库针对生产规模的工作负载在速度和相关性方面进行了优化。它是Elastic开放堆栈平台的基础。借助Elasticsearch可以对海量数据集进行近实时搜索、执行向量搜索、与生成式AI应用集成等等。其应用场景包括检索增强生成RAG、向量搜索、全文搜索、日志分析、指标监控、应用性能监控APM、安全日志分析等。若想了解Elasticsearch的更多特性和功能可访问产品页面。若要获取有关机器学习创新以及Elastic对最新Lucene贡献的信息可在Search Labs中找到更多内容。如何快速上手Elasticsearch设置Elasticsearch最简单的方法是在Elastic Cloud上使用Elasticsearch Service创建托管部署。如果想自行安装和管理Elasticsearch可以从elastic.co/downloads/elasticsearch下载最新版本。本地运行Elasticsearch要注意什么注意请勿将这些说明用于生产部署此设置仅用于本地开发和测试。使用 start-local 脚本可以在Docker中快速为本地开发或测试设置Elasticsearch和Kibana。前提条件如果尚未安装Docker需为操作系统下载并安装Docker Desktop。如果使用的是Microsoft Windows则需要安装适用于Linux的Windows子系统WSL。试用许可证此设置附带一个为期一个月的试用许可证包含Elastic的所有功能。试用期满后许可证将恢复为免费开源的Basic版本。更多信息请参考Elastic订阅计划。如何运行 start-local要在本地设置Elasticsearch和Kibana需运行 start-local 脚本curl -fsSL https://elastic.co/start-local | sh该脚本会创建一个 elastic-start-local 文件夹其中包含配置文件并使用Docker启动Elasticsearch和Kibana。运行脚本后可以通过以下端点访问Elastic服务Elasticsearch: http://localhost:9200Kibana: http://localhost:5601脚本会为 elastic 用户生成一个随机密码该密码会在安装结束时显示并存储在 .env 文件中。注意此设置仅用于本地测试HTTPS已禁用Elasticsearch使用基本身份验证。出于安全考虑Elasticsearch和Kibana仅可通过本地主机访问。怎样进行API访问Elasticsearch的API密钥会生成并存储在 .env 文件中名为 ES_LOCAL_API_KEY。可以使用此密钥通过编程语言客户端或REST API连接到Elasticsearch。在 elastic-start-local 文件夹中使用 curl 检查与Elasticsearch的连接source .envcurl $ES_LOCAL_URL -H Authorization: ApiKey ${ES_LOCAL_API_KEY}若要使用 elastic 用户的密码需设置并导出 ES_LOCAL_PASSWORD 环境变量例如source .envexport ES_LOCAL_PASSWORD如何向Elasticsearch发送请求可以通过REST API向Elasticsearch发送数据和其他请求。可以使用任何发送HTTP请求的客户端与Elasticsearch进行交互例如Elasticsearch语言客户端和 curl。如何使用 curl 发送请求以下是一个使用基本身份验证创建新Elasticsearch索引的 curl 命令示例curl -u elastic:$ES_LOCAL_PASSWORD \ -X PUT \ http://localhost:9200/my-new-index \ -H Content-Type: application/json如何使用语言客户端连接若要使用语言客户端连接到本地开发的Elasticsearch集群可以使用 elastic 用户名和存储在 ES_LOCAL_PASSWORD 环境变量中的密码进行基本身份验证。连接信息如下Elasticsearch端点: http://localhost:9200用户名: elastic密码: $ES_LOCAL_PASSWORD在环境变量中设置的值例如使用Python的 elasticsearch 客户端进行连接import osfrom elasticsearch import Elasticsearchusername elasticpassword os.getenv(ES_LOCAL_PASSWORD) # 在环境变量中设置的值client Elasticsearch(http://localhost:9200,basic_auth(username, password))print(client.info())如何使用开发工具控制台Kibana的开发控制台提供了一种简单的方式来试验和测试请求。要访问控制台打开Kibana然后转到“管理”“开发工具”。怎样添加数据到Elasticsearch可以通过REST API将JSON对象文档索引到Elasticsearch中。无论拥有的是结构化或非结构化文本、数值数据还是地理空间数据Elasticsearch都能高效地存储和索引这些数据以支持快速搜索。对于带有时间戳的数据如日志和指标通常将文档添加到由多个自动生成的后备索引组成的数据流中。如何添加单个文档要向索引中添加单个文档可提交一个针对该索引的HTTP POST请求POST /customer/_doc/1{firstname: Jennifer,lastname: Walters}此请求会在 customer 索引不存在时自动创建该索引添加一个ID为1的新文档并存储和索引 firstname 和 lastname 字段。新文档可立即从集群中的任何节点检索可以使用指定文档ID的GET请求来获取它GET /customer/_doc/1如何添加多个文档若要在一个请求中添加多个文档可使用 _bulk API。批量数据必须是换行分隔的JSONNDJSON每行必须以换行符 结尾包括最后一行。PUT customer/_bulk{ create: { } }{ firstname: Monica, lastname: Rambeau }{ create: { } }{ firstname: Carol, lastname: Danvers }{ create: { } }{ firstname: Wanda, lastname: Maximoff }{ create: { } }{ firstname: Jennifer, lastname: Takeda }如何进行搜索索引后的文档可进行近实时搜索。以下搜索会匹配 customer 索引中所有名字为Jennifer的客户GET customer/_search{query: {match: {firstname: Jennifer}}}怎样探索数据可以使用Kibana中的“发现”功能来交互式地搜索和过滤数据。从这里可以开始创建可视化图表、构建和共享仪表盘。要开始使用需创建一个连接到一个或多个Elasticsearch索引、数据流或索引别名的数据视图。转到“管理”“堆栈管理”“Kibana”“数据视图”选择“创建数据视图”输入数据视图的名称和匹配一个或多个索引的模式如 customer然后选择“保存数据视图到Kibana”。要开始探索数据转到“分析”“发现”。如何进行升级若要从早期版本的Elasticsearch进行升级请参阅Elasticsearch升级文档。怎样从源代码构建Elasticsearch使用Gradle作为其构建系统。要为本地操作系统构建发行版并在完成后打印其输出位置请运行./gradlew localDistro要为其他平台构建发行版请运行相关命令./gradlew :distribution:archives:linux-tar:assemble./gradlew :distribution:archives:darwin-tar:assemble./gradlew :distribution:archives:windows-zip:assemble发行版将输出到 distribution/archives 目录。要运行测试套件请参阅 TESTING。在哪里查看文档完整的Elasticsearch文档请访问elastic.co。有关文档流程的信息请参阅文档的README。有哪些示例和指南elasticsearch-labs 仓库包含可执行的Python笔记本、示例应用程序以及用于测试Elasticsearch在向量搜索、混合搜索和生成式AI用例的资源。如何进行贡献有关贡献指南请参阅 CONTRIBUTING。怎样反馈与获取支持如果发现了bug或有功能请求请在GitHub上创建一个Issue。请确保没有其他人已经为同一主题创建了Issue。如果在使用Elasticsearch时需要帮助可以在Elastic论坛或Slack上寻求帮助社区成员或Elastic工程师将很乐意协助。