96SEO 2026-08-09 09:20 0
在本教程中。我们将展示如何将 Embedding 模型嵌入 Elasticsearch,实现语义搜索。通过使用 NLP 模型,您可以直接用自然语言查询博客文档。而不必担心关键词匹配的局限性。
在开始之前。请先完成以下准备工作:

常见痛点:很多团队在启动时会遇到资源不足导致模型推理缓慢或超时的问题。建议先通过 Autoscale 配置动态伸缩,以避免峰值负载下的性能瓶颈。
# 安装所需 Python 包
pip install sentence-transformers eland elasticsearch transformers
请确认已安装所有必要的依赖项,随后导入所需模块:
from elasticsearch import Elasticsearch
from getpass import getpass
from urllib.request import urlopen
import json
from time import sleep
我们使用 工具安装一个文本嵌入模型。这里选用,它可以将搜索文本转换为 dense vector。
常见痛点:下载大模型时网络速度慢会导致部署时间过长;而小模型虽然速度快,但可能无法满足高精度需求。很关键,
使用 脚本下载并安装 Transformer 模型,并将任务类型设为 text_embedding
# 获取 Cloud ID 和 API Key
ELASTIC_CLOUD_ID=$
ELASTIC_API_KEY=$
# 下载并部署模型
eland_import_hub_model \
--cloud-id $ELASTIC_CLOUD_ID \
--hub-model-id sentence-transformers/all-MiniLM-L6-v2 \
--task-type text_embedding \
--es-api-key $ELASTIC_API_KEY \
--start \
--clear-previous
Create an Elasticsearch client instance using your Cloud ID and API key:
es = Elasticsearch(
cloud_id=ELASTIC_CLOUD_ID。api_key=ELASTIC_API_KEY,request_timeout=300,)
print)
常见痛点:ECS 集群与 ELK 的网络延迟可能导致请求超时; 请检查 VPC 配置和安全组规则,确保客户端能正常访问集群端口。
A pipeline is required to generate embeddings for incoming documents:
{
"processors":
}
提示: 请先确认模型已成功部署,否则 Ingest Processor 会报错。
INDEXNAME = "blogs"
PIPELINEID = "vectorize_blogs"
INDEXMAPPING = { "properties": { "title": { "type": "text","fields": { "keyword": { "type": "keyword","ignoreabove": 256 } } }。"textembedding": { "properties":{ "pseudoistruncated"&colon{"type"&colon:":boolean"},"pseudomodelid"&colon{"type"&colon:"text","fields"&colon:{"pseudokeyword"&colon{"type"&colon:"keyword","ignoreabove"&colon:256}}},"pseudopredictedvalue"&colon{&qott&,amp;qot,"densevector"&qot"dims"&qot"384"&qot"index"&qot"true"&qot"similarity"&qot"l2_norm"}} } } }
INDEXSETTINGS = { \"index\":{ \"numberofreplicas\":1,\"numberofshards\":1。\"defaultpipeline\": PIPELINE_ID } }
if es.indices.exists: es.indices.delete
es.indices.create( index=INDEXNAME,mappings=INDEXMAPPING,settings=INDEX_SETTINGS) print
User Pain Point: Mapping 定义错误是最常见的故障原因之一;是在 dense_vector 字段配置上。如果 dims 与实际向量维度不符,将导致索引失败或搜索结果失效。建议在开发阶段先使用小批量数据验证 mapping 正确性。
url = 'https://raw.githubusercontent.com/elastic/elasticsearch-labs/main/notebooks/integrations/hugging-face/blogs.json'
response = urlopen
titles = json.loads)
actions = for title in titles: actions.append actions.append
es.bulk sleep # 等待索引完成 print
User Pain Point: Bulk 索引过程中过多文档一次性发送会消耗大量内存,导致客户端崩溃。建议分批次提交,例如每 batch 1000 条,并监控内存使用情况。
The following query uses same embedding model to search for relevant blogs based on a natural language query:
{
“field”: “textembedding.predictedvalue”,“k”: 5,“numcandidates”: 10,“queryvectorbuilder”: {
“textembedding”: {
“modelid”: “sentence-transformersall-minilm-l6-v2”。“modeltext”: “how to track network connections”
}
}
}
python response = es.search( index=INDEXNAME,fields=,knn=querybody,source=False)
def show_results: for result in results: print
show_results
作为专业的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