Python 如何合并几个Elasticsearch查询中的排名?
我想合并通过查询Elasticsearch索引的单独字段获得的排名,以便获得“复合”排名 作为一个(愚蠢的)“配对”的例子,假设我想检索包含他们最喜欢的音乐、食物、运动的人的索引的最佳匹配结果 单独的查询可以是:Python 如何合并几个Elasticsearch查询中的排名?,python,
elasticsearch,Python,
elasticsearch,我想合并通过查询Elasticsearch索引的单独字段获得的排名,以便获得“复合”排名 作为一个(愚蠢的)“配对”的例子,假设我想检索包含他们最喜欢的音乐、食物、运动的人的索引的最佳匹配结果 单独的查询可以是: "query": { "match" : { "music" : "indie classical metal" } } 这将产生我的排名结果: 爱丽丝,2岁。鲍勃,3岁。查理 屈服 爱丽丝,2岁。查理,3岁。鲍勃 及 屈服 查理,2岁。爱丽丝,3岁。鲍勃 现在,我想根据上述排名获
"query": { "match" : { "music" : "indie classical metal" } }
这将产生我的排名结果:
"query": {
"bool": {
"should": [
{ "match" : { "music" : "indie classical metal" } },
{ "match" : { "foods" : "falafel strawberries coffee" } },
{ "match" : { "sports" : "basketball ski" } },
]
}
}
或
但是(好吧)这些并不是我想要的(不是使用分数,而是使用等级)。我知道对排名进行后期处理非常简单(例如,使用elasticsearch py,然后使用一些Python行),但是否可以直接使用elasticsearch查询来完成上述操作
(额外问题:除了我可以尝试的
bool
+should
和dis_max
之外,你能建议其他策略来合并多个领域的排名吗?看看-它应该允许你做你想要做的事情。但是请注意,这可能会导致查询执行速度变慢。您可能应该根据上面OP的需要提供一个示例函数\u分数
查询。
"query": { "match" : { "sports" : "basketball ski" } }
"query": {
"bool": {
"should": [
{ "match" : { "music" : "indie classical metal" } },
{ "match" : { "foods" : "falafel strawberries coffee" } },
{ "match" : { "sports" : "basketball ski" } },
]
}
}
"query": {
"dis_max": {
"queries": [
{ "match" : { "music" : "indie classical metal" } },
{ "match" : { "foods" : "falafel strawberries coffee" } },
{ "match" : { "sports" : "basketball ski" } },
]
}
}