繁体   English   中英

在Elasticsearch中仅使用数字字段索引文档

[英]Indexing documents only with numeric fields in elasticsearch

我正在尝试在Elasticsearch中存储仅由数字字段表示的对象。 在我的情况下,每个对象都有300个浮点字段和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个字段与此查询字段“最相似”的文档。 因此,这就像进行余弦相似度一样,但是我试图使用ES来做到这一点,以便快速。

(1)首先,是否有可能做我正在做的事情?

(2)其次,我探索了ES的function_score功能并尝试使用它,但是它返回的最大匹配分数为0.0!

在[2]中,关于我应该使用什么以及我可能做错了什么的任何评论。

我认为您仍然需要function_score但是像这样(对我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"
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM