通过pyes和elasticsearch中的多个参数进行排序

Dra*_*ric 11 python sorting elasticsearch

我可以将单个排序参数传递给pyes中的搜索查询,如下所示:

s = MatchAllQuery()
conn.search(query=Search(s), indexes=["test"], sort='_score')
Run Code Online (Sandbox Code Playgroud)

但我需要传递一个额外的参数来对具有相同分数的文档进行排序,如下所示:

{
  "sort": [
    "_score",
    {
      "extra_param": {
        "order": "asc"
      }
    }
  ],
  "query": {
    "term": {
      "match_all": {}
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我怎么能在pyes中做到这一点?

谢谢

Dra*_*ric 16

如果您希望结果集中具有相同分数的结果按价格排序,请将价格附加到排序字符串:

s = MatchAllQuery()
conn.search(query=Search(s), indexes=["test"], sort='_score,price')
Run Code Online (Sandbox Code Playgroud)

默认情况下,排序顺序为升序.要将排序顺序传递:asc:desc到sort参数

s = MatchAllQuery()
conn.search(query=Search(s), indexes=["test"], sort='_score,price:desc')
Run Code Online (Sandbox Code Playgroud)