96SEO 2026-08-03 18:31 5
在实际项目中,很多开发者会遇到以下痛点:
本交互式 Notebook 将演示如何使用官方 Elasticsearch Python 客户端、sentence-transformers 进行文本嵌入,并完成语义检索。你将学会把传统关键词搜索和语义搜索结合起来建立混合搜索程序。

如果你倾向于自行在机器上搭建 Elasticsearch,请参考《》并查看对应的代码仓库。
没有 Elastic Cloud 部署?现在可以免费注册试用,登录后进入“创建部署”页面点击 Create deployment 并保持默认设置,即可获得可直接使用的云端实例。
安装 Elasticsearch Python 客户端还有 Sentence Transformers:
pip install -qU "elasticsearch<" sentence-transformers==0.4.1
再看随后加载模型。
from sentence_transformers import SentenceTransformer
model = SentenceTransformer
# 更多模型信息请访问 Hugging Face
from elasticsearch import Elasticsearch
from getpass import getpass
ELASTIC_CLOUD_ID = getpass
ELASTIC_API_KEY = getpass
client = Elasticsearch(
cloud_id=ELASTIC_CLOUD_ID,api_key=ELASTIC_API_KEY,)
如果你使用本地或自托管实例,只需将 hosts= 替换上述参数即可。
运行以下代码以收集匿名使用统计信息:
curl -O -s https://raw.githubusercontent.com/elastic/elasticsearch-labs/main/telemetry/telemetry.py
from telemetry import enable_telemetry
client = enable_telemetry
print)
若返回类似如下信息,则说明已成功连接:
{
再看"name","instance-...","cluster_name": "...","cluster_uuid": "...","version": {
"number": "...",...
},"tagline": "You Know,for Search"
}
我们将创建一个包含以下字段的索引:
titleauthorspublish_datenum_reviewspublisher
client.indices.delete
# 输出示例:
# ObjectApiResponse
mappings = {
"properties": {
"title_vector": {
再看"type","dense_vector","dims": 384,# all-MiniLM-L6-v2 的向量维度
"index": True。"similarity": "cosine"
}
}
}
client.indices.create
# 输出:
# ObjectApiResponse
import json
from urllib.request import urlopen
url = "https://raw.githubusercontent.com/elastic/elasticsearch-labs/main/notebooks/search/data.json"
books = json.loads.read)
operations =
for book in books:
# 将标题转为向量并存入 title_vector 字段
book = model.encode.tolist
operations.append
operations.append
client.bulk
# 返回示例略...
def pretty_response:
hits = response
if not hits:
print
return
for hit in hits:
src = hit
print
print}")
print}")
print}")
print}")
print}")
print}")
print
)
下面的代码演示如何对查询 “javascript books” 进行向量化,接下来在 title_vector**字段上执行最近邻检索:
index”,knn={ “field”: “titlevector”,“queryvector”: model.encode.tolist,“k”: 5,“numcandidates”: 100 } ) pretty_response
再看典型输出示例,
KNN 查询本身只关注向量相似度。
若需要在此基础上加入结构化过滤,例如限定出版社、出版日期等。可通过 {“filter”:…} 子句实现,
下面的查询检索与 “javascript books” 向量相似的图书,同时只返回出版社为 addison‑wesley 的记录。
response = client.search(
index =" bookindex ",knn ={
“field ” : “ title _ vector ”,“query _ vector ” : model.encode.tolist,“k ” :5,“numcandidates ” :100,“filter ” :{
“term ” :{
“publisher.keyword ” :“ addison‑wesley ”
}
}
}
)
pretty_response
结果示例的观点是。
实际业务中往往需要同时考虑关键字匹配和语义相似度。下面展示一个混合查询,将传统 match 查询与 KNN 相结合。实现更精准、更符合使用者意图的结果。
response = client.search( index =" bookindex ",query ={ “bool ” :{ “must ” :,“should ” :,# 可选:结构化过滤。如 publisher.keyword #“filter”: } } ) pretty_response
通过上述步骤。你已经完成了从部署 Elastic Cloud、准备向量模型、建立索引、导入数据,到执行语义检索还有混合查询的全链路实践。针对前文提到的痛点,这套方案提供了清晰、可复用的实现方法。让你可以快速在自己的业务场景中落地语义搜索。话说回来,
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback