【问题标题】:Python elasticsearch-dsl sorting with multiple fields具有多个字段的 Python elasticsearch-dsl 排序
【发布时间】:2017-09-27 23:42:21
【问题描述】:

我正在尝试使用 elasticsearch-dsl 形成排序命令。但是我无法以正确的格式传递变量。

格式应该是

s=Search()
s = s.sort({"time":{"order":"asc"}}, {"anoter_field":{"order":"desc"}})
s.execute()

问题是我试图将{"time":{"order":"asc"}}, {"anoter_field":{"order":"desc"}} 作为一个变量,但我似乎无法以正确的语法得到它。我尝试使用 dict、list 和 string,但似乎都不起作用。

我的输入将是一个看起来像

的字典
input = {"time":"asc", "another_field":"desc"}

【问题讨论】:

    标签: python elasticsearch-dsl


    【解决方案1】:
    data_input = {"time":"asc", "another_field":"desc"}
    args = [{k:{'order':v}} for k,v in data_input.items()]
    s.sort(*args)
    

    我猜你问的是什么?很难说...

    【讨论】:

    • 是的....你完全正确。是 * 让传递列表没问题吗?
    • 是的,这就是列表解包
    • 您的答案完全满足我的需要,但是,我正在使用{"name": "asc", "age": "asc"} 进行过滤,在这种情况下,我的结果只是将年龄作为唯一的排序参数,而忽略了按名称排序。
    猜你喜欢
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多