我正在执行ES查询

data = es.search(index='indexName', size=10000,body={"query": {"exists": {"field": "field_name"}}})

但是我希望结果重新排序,如果它具有另一个称为'reviewed'的字段设置为True

如果为True,则应移至末尾。查询被输入表中。
item    reviewed
-----------------
apple     [x]   <----check boxes
pear      [ ]
banana    [ ]

[ submit ]

然后在重新加载
item    reviewed
-----------------
pear      [ ]
banana    [ ]
apple     [ ]

[ submit ]

最佳答案

您应该做的就是简单地使用bool / should子句将reviewed设置为false的文档,如下所示:

{
  "query": {
    "bool": {
      "must": {
        "exists": {
          "field": "field_name"
        }
      },
      "should": {
        "term": {
          "reviewed": false
        }
      }
    }
  }
}

将会发生的事情是,所有具有名为field_name的字段的文档都将被匹配,但是所有将reviewed设置为false的文档都将比那些将reviewed设置为true的文档更高。

10-06 01:43