【问题标题】:Sorting by multiple params in pyes and elasticsearch在pyes和elasticsearch中按多个参数排序
【发布时间】:2012-02-23 11:12:21
【问题描述】:

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

s = MatchAllQuery()
conn.search(query=Search(s), indexes=["test"], sort='_score')

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

{
  "sort": [
    "_score",
    {
      "extra_param": {
        "order": "asc"
      }
    }
  ],
  "query": {
    "term": {
      "match_all": {}
    }
  }
}

如何在 pyes 中做到这一点?

谢谢

【问题讨论】:

    标签: python sorting elasticsearch


    【解决方案1】:

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

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

    默认情况下,排序顺序是升序。要传递排序顺序,请将 :asc:desc 附加到排序参数

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

    【讨论】:

      【解决方案2】:

      如果您想通过es.searchsort 关键字对可用的内容进行更详细的排序,您可以将搜索字典传递给es.Search 构造函数。

      s = Search({'term': {'foo.monkey': 'george'}},
                 sort=[{'_geo_distance': {'unit': 'mi',
                                          'order': 'desc',
                                          'monkey.location': '81,20'}}]) 
      conn.search(s)
      

      【讨论】:

        猜你喜欢
        • 2018-11-11
        • 1970-01-01
        • 2020-06-29
        • 2023-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-19
        • 1970-01-01
        相关资源
        最近更新 更多