在 elasticsearch 中仅使用数字字段索引文档
Indexing documents only with numeric fields in elasticsearch
我正在尝试将仅由数字字段表示的对象存储在 elasticsearch 中。在我的例子中,每个对象都有 300 个 float 字段和 1 个 id 字段。我将 id 字段设置为 not_analyzed。我可以将文档存储在 ES 中。
"_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个字段为"most similar"到这个查询字段的文档。
所以这有点像做余弦相似度,但我正在尝试使用 ES 来做这件事,所以它很快。
(1)首先,我现在做的事情有可能吗??
(2) 其次,我探索了 ES 的 function_score 特性并尝试使用它,但是 returns 最大匹配分数是 0.0!!
关于我应该使用什么以及我在 [2] 中可能做错了什么的任何评论。
我认为你仍然需要 function_score
但像这样(对我有用):
{
"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"
}
}
}
我正在尝试将仅由数字字段表示的对象存储在 elasticsearch 中。在我的例子中,每个对象都有 300 个 float 字段和 1 个 id 字段。我将 id 字段设置为 not_analyzed。我可以将文档存储在 ES 中。
"_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个字段为"most similar"到这个查询字段的文档。 所以这有点像做余弦相似度,但我正在尝试使用 ES 来做这件事,所以它很快。
(1)首先,我现在做的事情有可能吗??
(2) 其次,我探索了 ES 的 function_score 特性并尝试使用它,但是 returns 最大匹配分数是 0.0!!
关于我应该使用什么以及我在 [2] 中可能做错了什么的任何评论。
我认为你仍然需要 function_score
但像这样(对我有用):
{
"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"
}
}
}