文档中心>Elasticsearch Service>向量搜索指南>特别:采用 semantic 字段简化写入和搜索

特别:采用 semantic 字段简化写入和搜索

最近更新时间:2026-03-02 16:22:42

我的收藏
本文介绍 semantic 搜索的基本要点,您可以参阅此文档了解更多详情。
semantic 直接使用自然语言写入和查询,相比 knn 查询体验更加简单。我们只需要指定基于机器学习节点或者 Inference 创建的推理服务,即可轻松完成读写,无需创建 Ingest Pipeline 和关注底层模型与推理细节(例如维度、m、ef 等)。

创建推理端点

将机器学习节点部署的模型服务创建为一个推理端点(参阅这里了解创建推理端点的更多细节)。
PUT _inference/text_embedding/bge-base-zh-service
{
"service": "elasticsearch",
"service_settings": {
"model_id": "bge-base-zh",
"num_allocations": 1,
"num_threads": 1
}
}

创建索引

semantic 字段默认用 Elastic 自带的.elser-2-elastic 推理端点(EIS 服务),这是一个稀疏向量嵌入模型,我们可以显式地指定为自己创建的推理端点:
PUT semantic_search_index
{
"mappings":{
"properties": {
"content_vector":{
"type":"semantic_text",
"inference_id":"bge-base-zh-service", // 指定写入和查询的推理端点
},
"content":{
"type":"text",
"copy_to":"content_vector"
}
}
}
}

写入数据

写入的同时,自动调用模型生成向量数据:
PUT semantic_search_index/_doc/1
{
"content":"使用semantic search,可以简化数据入库语句"
}

PUT semantic_search_index/_doc/2
{
"content":"使用semantic search,可以简化数据查询语句"
}


执行语义搜索

执行 match 搜索,查询内容采用自然语言,如下是一个示例:
GET semantic_search_index/_search
{
"query": {
"match": {
"content_vector": {
"query": "What is semantic search ?"
}
}
}
}