Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何合并几个Elasticsearch查询中的排名?_Python_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Python,elasticsearch" /> elasticsearch,Python,elasticsearch" />

Python 如何合并几个Elasticsearch查询中的排名?

Python 如何合并几个Elasticsearch查询中的排名?,python,elasticsearch,Python,elasticsearch,我想合并通过查询Elasticsearch索引的单独字段获得的排名,以便获得“复合”排名 作为一个(愚蠢的)“配对”的例子,假设我想检索包含他们最喜欢的音乐、食物、运动的人的索引的最佳匹配结果 单独的查询可以是: "query": { "match" : { "music" : "indie classical metal" } } 这将产生我的排名结果: 爱丽丝,2岁。鲍勃,3岁。查理 屈服 爱丽丝,2岁。查理,3岁。鲍勃 及 屈服 查理,2岁。爱丽丝,3岁。鲍勃 现在,我想根据上述排名获

我想合并通过查询Elasticsearch索引的单独字段获得的排名,以便获得“复合”排名

作为一个(愚蠢的)“配对”的例子,假设我想检索包含他们最喜欢的音乐、食物、运动的人的索引的最佳匹配结果

单独的查询可以是:

"query": { "match" : { "music" : "indie classical metal" } }
这将产生我的排名结果:

  • 爱丽丝,2岁。鲍勃,3岁。查理

    屈服

  • 爱丽丝,2岁。查理,3岁。鲍勃

    屈服

  • 查理,2岁。爱丽丝,3岁。鲍勃
  • 现在,我想根据上述排名获得一个“综合”排名,例如,使用中列出的投票方法

    到目前为止,为了实现这些目标,我使用了复合查询的语法,例如

    "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" } },
            ]
        }
     }