Elasticsearch:跨数据库和业务系统搜索

概述

Elasticsearch 简介

Elasticsearch 从文本搜索的业界标准 BM25 开始,提供多种搜索技术。它还提供由 AI 模型驱动的语义搜索,根据上下文和意图优化结果。

在本指南中,您将学习如何将数据从外部数据库同步到 Elasticsearch,并使用语义搜索轻松搜索数据库。


装载数据

创建 Elastic Cloud 项目

开始 14 天试用。一旦您访问 cloud.elastic.co 并创建帐户,请按照以下步骤启动您的第一个 Elasticsearch Serverless 项目。

首先,选择 Elasticsearch

screenshot-01-which-type-project-like-to-create.png

创建一个通用项目。将其命名为"我的项目",然后单击创建项目

screenshot-02-confirm-project-settings.png

现在您的 Elasticsearch Serverless 项目将会被创建。接下来,创建您的第一个 Elasticsearch 索引并将其命名为“my-index。”单击 创建我的索引

screenshot-03-get-started-elasticsearch.png

接下来,您可以向 Elasticsearch 添加第三方数据源。在此示例中,我们有一个 MongoDB 数据库,其中包含约 150000 个视频游戏标题以及“id”、“name”、“description”和“date”列。我们将把这个数据库同步到 Elasticsearch,并且作为额外的步骤,我们将为其添加语义搜索功能。

让我们用相同的字段名和额外的“description_semantic”创建一个基本的索引映射,其中将包含用于语义搜索的向量。打开开发工具,粘贴以下命令更新索引映射:

screenshot-04-console.png

PUT my-index/_mappings
{
"properties": {
"name": {
"type": "text"
},
"description": {
"type": "text",
"copy_to": "description_semantic"
},
"description_semantic": {
"type": "semantic_text"
},
"date": {
"type": "date"
}
}
}


从现有数据库获取数据

您已准备好连接到现有数据库。单击连接器+ 自管型连接器

screenshot-05-connectors.png

本指南将使用 MongoDB 数据库。从连接器类型列表中选择 MongoDB。

screenshot-06-mongodb-d6b9-link-elasticsearch.png

请按照说明使用 Docker 部署自托管连接器。您将需要创建一个 config.yml 文件。请注意,连接器Elasticsearch 上的 api_key 是相同的。例如:

连接器:
-
connector_id: KPIDOZUBfX6AM3jXM_g7
service_type: mongodb
api_key: RGZMUU9KVUJmWDZBTTNqWFRQano6R3RRb01jR2kxRkNqWTA5eGtSa3NFZw==
elasticsearch:
host: https://my-project-cc67ad.es.us-east-1.aws.elastic.cloud:443
api_key:RGZMUU9KVUJmWDZBTTNqWFRQano6R3RRb01jR2kxRkNqWTA5eGtSa3NFZw==

然后,使用以下命令启动自托管连接器:

docker run -v "./connectors-config:/config"--tty --rm  docker.elastic.co/enterprise-search/elastic-connectors:8.17.0 /app/bin/elastic-ingest -c /config/config.yml

接下来,将配置添加到 MongoDB 数据库,然后单击下一步

screenshot-07-mongodb-d6b9-configure.png

选择必须同步数据的索引——在本例中它是“my-index”,即我们之前创建的索引。单击同步

screenshot-08-mongodb-d6b9-connect-index.png

就是这么简单!连接器将遍历数据库,并将文档同步到“my-index”。主 Connectors(连接器)页面将显示当前状态。

screenshot-11-mongodb-d6b9-connectors.png

连接器还可以配置为定期将数据库同步到 Elasticsearch。如要配置,请单击连接器,然后单击调度,选择“每小时”,然后单击“保存”。现在,只要自托管连接器正常运行,内容就会在每小时开始时同步。

screenshot-10-mongodb-d6b9-scheduling.png


使用 Elasticsearch

查询数据

现在有趣的部分开始了。前往构建 > 开发工具(我们用来更新索引映射的同一个部分)并发出以下查询,这将对“name”和“description”字段进行全文本搜索:

GET my-index/_search
{
"query": {
"multi_match": {
"query": "adventure game on a desert island",
"fields": [
"name",
"description"
]
}
}
}

由于索引现在有了一个 semantic_text 字段,因此可以像这样进行查询:

GET my-index/_search
{
"query": {
"semantic": {
"field": "description_semantic",
"query": "game about ghosts in medieval times"
}
}
}

您刚刚了解了如何将数据从外部数据库同步到 Elasticsearch 并在其上添加语义搜索!


后续步骤

感谢您花时间学习如何在 Elastic Cloud 中使用 Python 创建第一个搜索查询。当您开始使用 Elastic 之旅时,请了解在跨环境部署时,作为用户应管理的一些操作、安全和数据组件

准备好开始了吗?赶快在 Elastic Cloud 上启动一个免费的 14 天试用吧,或者尝试这些 15 分钟的搜索 AI 101 实践学习

开始免费试用