我正在执行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的文档更高。