Dav*_*cco 8 python elasticsearch
我想合并从查询Elasticsearch索引的单独字段获得的排名,以获得"复合"排名.
作为一个(愚蠢的)"配对"示例,假设我想要在包含他们喜欢的音乐,食物,体育的人的索引上检索最佳匹配结果.
单独的查询可以是例如
"query": { "match" : { "music" : "indie classical metal" } }
Run Code Online (Sandbox Code Playgroud)
这将使我成为排名结果:
"query": { "match" : { "foods" : "falafel strawberries coffee" } }
Run Code Online (Sandbox Code Playgroud)
生产
和
"query": { "match" : { "sports" : "basketball ski" } }
Run Code Online (Sandbox Code Playgroud)
生产
现在,我想基于上面的排名获得"聚合"排名,例如使用如何合并有序偏好集合中列出的投票方法.
到目前为止,为了实现这些方面的某些内容,我使用了复合查询的语法,例如
"query": {
"bool": {
"should": [
{ "match" : { "music" : "indie classical metal" } },
{ "match" : { "foods" : "falafel strawberries coffee" } },
{ "match" : { "sports" : "basketball ski" } },
]
}
}
Run Code Online (Sandbox Code Playgroud)
要么
"query": {
"dis_max": {
"queries": [
{ "match" : { "music" : "indie classical metal" } },
{ "match" : { "foods" : "falafel strawberries coffee" } },
{ "match" : { "sports" : "basketball ski" } },
]
}
}
Run Code Online (Sandbox Code Playgroud)
但是(AFAIK)这些并没有做我想要的(不是使用分数,而是排名).我理解对排名进行后期处理是相当简单的(例如使用elasticsearch-py然后使用一些Python行),但是可以使用Elasticsearch查询直接执行上述操作吗?
(奖金问题:你能否提出其他策略来合并来自多个领域的排名,超出bool+ should并且dis_max我可以尝试?)
小智 -1
看看Function Score Query - 它应该允许您执行您\xe2\x80\x99 正在寻找的操作。但请注意,这可能会导致查询执行速度变慢。
\n