Python 在elasticsearch中仅使用数字字段索引文档
我试图在elasticsearch中存储仅由数字字段表示的对象。在我的例子中,每个对象有300个浮点字段和1个id字段。我已将id字段设置为未分析。我能够将文件存储在ES中Python 在elasticsearch中仅使用数字字段索引文档,python,
elasticsearch,similarity,vector-space,Python,
elasticsearch,Similarity,Vector Space,我试图在elasticsearch中存储仅由数字字段表示的对象。在我的例子中,每个对象有300个浮点字段和1个id字段。我已将id字段设置为未分析。我能够将文件存储在ES中 "_index": "smart_content5", "_type": "doc2vec", "_id": "AVtAGeaZjLL5cvd8z9y7", "_score": 1, "_source": { "feature_227": 0.0856793, "fe
"_index": "smart_content5",
"_type": "doc2vec",
"_id": "AVtAGeaZjLL5cvd8z9y7",
"_score": 1,
"_source": {
"feature_227": 0.0856793,
"feature_5": -0.115823,
"feature_119": -0.0379987,
"feature_145": 0.17952,
"feature_29": 0.0444945,
但是现在我想运行一个查询,用相同的300个字段表示,但不同的数值(当然)。现在我想找到300个字段与此查询字段“最相似”的文档。
这有点像做余弦相似性,但我试着用ES来做这件事,这样做很快
(1) 首先,我现在做的事情有可能做到吗
(2) 第二,我探索了ES的特性并尝试使用它,但它返回的最大匹配分数是0.0
关于我应该使用什么以及我在[2]中可能做了什么错误的任何评论。我认为您仍然需要
函数\u分数
,但像这样(它对我有效):
当我尝试执行此操作时,会出现以下错误:原因=',%r'%self.info['error']['root_cause'][0]['reason']TypeError:字符串索引必须是整数我从“origin”和“scale”值中删除双引号时不会出现此错误。我用5.3测试了这一点,并从Kibana开发工具发送了查询。我使用的是1.7,这可能就是原因。
{
"query": {
"function_score": {
"query": {},
"functions": [
{
"gauss": {
"feature_227": {
"origin": "0",
"scale": "0.5"
}
}
},
{
"gauss": {
"feature_5": {
"origin": "0",
"scale": "0.5"
}
}
},
{
"gauss": {
"feature_119": {
"origin": "0",
"scale": "0.5"
}
}
},
{
"gauss": {
"feature_145": {
"origin": "0",
"scale": "0.5"
}
}
},
{
"gauss": {
"feature_29": {
"origin": "0",
"scale": "0.5"
}
}
}
],
"score_mode": "sum"
}
}
}