elasticsearch,Python,elasticsearch" /> elasticsearch,Python,elasticsearch" />

Python Elasticsearch协同相似性问题,更新文档之前是否需要创建映射?

Python Elasticsearch协同相似性问题,更新文档之前是否需要创建映射?,python,elasticsearch,Python,elasticsearch,我想知道我是否真的把事情搞砸了。。。我真的没有太多时间来重新更新我所有的文档 好的,使用sbert,我在文档中添加了句子嵌入,下面是基本的插入过程: def tweet\u sbert\u embeddings(): """ 使用sbert wordvecs更新elasticsearch索引 """ 总数=0 尽管如此: 结果=es.search( index=“tweets”, 尺寸=50, 身体={ “_来源”:[ “文本”, ], “查询”:{“bool”:{“must_not”:{“ex

我想知道我是否真的把事情搞砸了。。。我真的没有太多时间来重新更新我所有的文档

好的,使用sbert,我在文档中添加了句子嵌入,下面是基本的插入过程:

def tweet\u sbert\u embeddings():
"""
使用sbert wordvecs更新elasticsearch索引
"""
总数=0
尽管如此:
结果=es.search(
index=“tweets”,
尺寸=50,
身体={
“_来源”:[
“文本”,
],
“查询”:{“bool”:{“must_not”:{“exists”:{“field”:“sbert_vec”}}},
},
)
如果len(结果[“命中”][“命中”])==0:
打印(“完成”)
打破
ids=[]
句子=[]
对于结果中的项目[“命中”][“命中”]:
附加(项[“\u id”])
句子。追加(项目[“_source”][“text”])
embeddings=embedder.encode(句子,转换为张量=True)
批量_数据=[]
#embeddings.size()[0]对应于len(句子)
对于范围内的索引(embeddings.size()[0]):
bulk_data.append(
{
“_op_type”:“更新”,
“_索引”:“tweets”,
“_id”:id[索引],
“doc”:{“sbert_vec”:嵌入[index].tolist()},
}
)
helpers.bulk(es、bulk_数据)
现在,我想计算余弦相似度,并在此基础上对文档进行评分。。。然后我会:

为True时:
输入问题=输入(“请输入问题:”)
encode_start_time=time.time()
问题嵌入=embedder.encode(inp\u问题)
encode_end_time=time.time()
#词汇搜索
bm25=es.search(index=“tweets”,body={“查询”:{“匹配”:{“文本”:inp_question}})
#语义搜索
sem_search=es.search(
index=“tweets”,
身体={
“查询”:{
“脚本_分数”:{
“查询”:{“bool”:{“must”:{“exists”:{“field”:“sbert_vec”}}},
“脚本”:{
“来源”:“协同相似性(params.queryVector,doc['sbert_vec'])+1.0”,
“params”:{“queryVector”:问题},
},
}
}
},
)
打印(“输入问题:”,输入问题)
印刷品(
“计算嵌入耗时{.3f}秒,BM25搜索耗时{.3f}秒,使用ES进行语义搜索耗时{.3f}秒”。格式(
编码结束时间-编码开始时间,
bm25[“take”]/1000,
sem_搜索[“take”]/1000,
)
)
打印(“BM25结果:”)
对于bm25中的命中率[“命中率”][“命中率”][0:5]:
打印(“\t{}.”格式(点击[“\u源”][“问题”]))
打印(“\n手动搜索结果:”)
对于搜索引擎中的命中率[“命中率”][“命中率”][0:5]:
打印(“\t{}.”格式(点击[“\u源”][“问题”]))
打印(“\n\n=============\n”)
这几乎直接来自:

尽管如此,我还是得到了
elasticsearch.exceptions.RequestError:RequestError(400,'search\u phase\u execution\u exception','runtime error')
作为错误

我想知道,这可能与我没有为sbert_vec创建稠密的_向量映射有关吗?如果是的话,我可以在事后这样做吗

希望有人能帮助我,我已经挣扎了几天的弹性和学习速度快。。。但还不够快