Elasticsearch语义搜索工具

一个基于Elasticsearch的语义搜索工具,用于对Search Labs博客文章进行语义搜索和索引管理。

  • by jedrazb
  • Python
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 jedrazb/elastic-semantic-search-mcp-server

使用说明

MCP服务器:Elasticsearch语义搜索工具

演示回购:https://j.blaszyk.me/tech-blog/mcp-server-elasticsearch-semantic-search/

目录


概述

此存储库提供 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

这将返回索引中的文档总数。您还可以在中验证 基巴纳.


完成! 您现在可以执行 语义搜索 在…上 搜索实验室博客文章