为了账号安全,请及时绑定邮箱和手机立即绑定

关于 Elasticsearch 架构和查询的问题

关于 Elasticsearch 架构和查询的问题

Go
哆啦的时光机 2022-11-02 10:10:06
我正在建立一个 Elasticsearch 集群来搜索与一个 id 关联的向量。例如,鉴于此数据:Parent id / Object id / vectorsP1 / BD / 123, 125, 235 ... 10304, 50305 P1 / DF / 125, 235, 240 ... 10305, 10306P1 / ED / 123, 235, 350 ... 10010, 10344... P2 / AB / 125, 535, 740 ... 9315, 10306P2 / VC / 133, 435, 350 ... 3010, 20344P2 / RF / 113, 353, 390 ... 10110, 30344...There are millions of parentshundreds of objects in a parent1000 vectors in an object所以基本上我想索引所有向量给定输入 P999,通过找到最多的相似对象来从集群中搜索相似的父对象。(相似对象:至少 50 个向量匹配)这是我期望的示例结果Input:P999 / HH / xxx, xxx ...P999 / YH / xxx, xxx ...P999 / GJ / xxx, xxx ......Output:[result sorted desc] P20 has 60 similar objectsP4 has 45 similar objectsP501 has 41 similar objects...similar objects: at least 50 vector matches为了实现这一点,我需要好的架构存储向量的查询按降序搜索相似对象列表的查询我需要这三个方面的帮助。
查看完整描述

1 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

我怀疑您是否可以使用纯弹性搜索查询获得所需的输出。


我要做的是有一个 python 脚本,它能够以编程方式更改正在搜索的向量。然后根据响应的大小,您可能需要使用 Scan API 来返回所有匹配项,您的最终查询看起来像这样


"query" : {

    "bool" : {

        "should" : [

            //THIS IS THE PART THAT YOU PROGRAMATICALLY FILL USING THE VECTORS FROM THE PARENT YOU SPECIFIED

            {"match" : {"vector" : "111"}},

            {"match" : {"vector" : "222"}},

            {"match" : {"vector" : "333"}},

            ...

            {"match" : {"vector" : "444"}},

        ],

      "minimum_should_match": "50"

    }

}

那么您将使用 python 确定 P999 和所有匹配项之间的匹配向量数


您是否有理由不使用图形数据库?使用图形数据库可以更轻松、更快速地找到这些关系。


如果您必须使用功能分数,我会将其添加到上面的查询中。


它应该做的是为每个匹配的文档添加一个权重,但是我相当肯定它会添加查询本身将在对文档进行评分方面做得很好


        "function_score": {

          "query": { "match_all": {} },

          "boost": "5", 

          "functions": [

              {

                  "filter": { "match": { "vector": "111" } }, 

                  "weight": 1

              },

              {

                  "filter": { "match": { "vector": "222" } },

                  "weight": 1

              }

              ...

          ],

          "max_boost": 1,

          "score_mode": "max",

          "boost_mode": "replace",

          "min_score" : 0

        }


查看完整回答
反对 回复 2022-11-02
  • 1 回答
  • 0 关注
  • 89 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信