MCP服务器:Elasticsearch语义搜索工具
演示回购:https://j.blaszyk.me/tech-blog/mcp-server-elasticsearch-semantic-search/
目录
- 1.验证爬网程序设置 - 2.配置Elasticsearch - 3.更新语义搜索的索引映射 - 4.开始爬行 - 5.验证索引文件
______________________________________________________________________
概述
此存储库提供 MCP服务器的Python实现 为了 语义搜索 通过 搜索实验室博客文章 索引在 弹性搜索.
它假设您已经抓取了博客文章并将其存储在 search-labs-posts 索引使用 弹性开放式履带.
______________________________________________________________________
运行MCP服务器
添加 ES_URL 和 ES_AP_KEY 进入 .env 文件,(看看 这里 用于生成具有最小权限的api密钥)
在中启动服务器 MCP检查员:
make dev运行后,访问MCP检查器: http://localhost:5173
______________________________________________________________________
与Claude Desktop集成
将MCP服务器添加到 克劳德桌面:
make install-claude-config此更新 claude_desktop_config.json 在您的主目录中。下次重启时,Claude应用程序将检测服务器并加载声明的工具。
______________________________________________________________________
爬行搜索实验室博客文章
1.验证爬网程序设置
检查是否 弹性开放式履带 工作,运行:
docker run --rm \
--entrypoint /bin/bash \
-v "$(pwd)/crawler-config:/app/config" \
--network host \
docker.elastic.co/integrations/crawler:latest \
-c "bin/crawler crawl config/test-crawler.yml"这应该打印来自 单页.
______________________________________________________________________
2.配置Elasticsearch
设置 Elasticsearch URL和API密钥.
使用生成API密钥 最小爬虫权限:
POST /_security/api_key
{
"name": "crawler-search-labs",
"role_descriptors": {
"crawler-search-labs-role": {
"cluster": ["monitor"],
"indices": [
{
"names": ["search-labs-posts"],
"privileges": ["all"]
}
]
}
},
"metadata": {
"application": "crawler"
}
}复制 encoded 从响应中获取值并将其设置为 API_KEY.
______________________________________________________________________
3.更新语义搜索的索引映射
确保 search-labs-posts 索引存在。如果没有,请创建它:
PUT search-labs-posts更新 映射 使能够 语义搜索:
PUT search-labs-posts/_mappings
{
"properties": {
"body": {
"type": "text",
"copy_to": "semantic_body"
},
"semantic_body": {
"type": "semantic_text",
"inference_id": ".elser-2-elasticsearch"
}
}
}这 body 字段被索引为 语义文本 使用 Elasticsearch的ELSER模型.
______________________________________________________________________
4.开始爬行
运行爬虫程序以填充索引:
docker run --rm \
--entrypoint /bin/bash \
-v "$(pwd)/crawler-config:/app/config" \
--network host \
docker.elastic.co/integrations/crawler:latest \
-c "bin/crawler crawl config/elastic-search-labs-crawler.yml"\[!提示\] 如果使用新的Elasticsearch集群,等待 ELSER模型 在索引之前开始。
______________________________________________________________________
5.验证索引文件
检查文档是否已编入索引:
GET search-labs-posts/_count这将返回索引中的文档总数。您还可以在中验证 基巴纳.
______________________________________________________________________
完成! 您现在可以执行 语义搜索 在…上 搜索实验室博客文章

