当使用布尔查询时,Elasticsearch不支持search_after
参数。search_after
只能用于基于排序的查询,如query_string
和match_all
等。如果您想使用布尔查询并支持search_after
,您可以考虑使用function_score
查询来实现。
下面是一个使用function_score
查询来实现布尔查询并支持search_after
的示例代码:
{
"query": {
"function_score": {
"query": {
"bool": {
"must": [
{
"term": {
"field1": "value1"
}
},
{
"term": {
"field2": "value2"
}
}
]
}
},
"search_after": ["value1", "value2"],
"script_score": {
"script": {
"source": "_score"
}
}
}
},
"sort": [
{
"_score": {
"order": "desc"
}
}
]
}
在上面的示例中,我们使用function_score
查询来包装布尔查询,并添加search_after
参数来支持分页。search_after
参数的值是一个包含上一页最后一个文档的排序值的数组。在排序字段相同的情况下,Elasticsearch将从这个排序值之后的下一个文档开始返回结果。
请注意,您需要根据您的数据和查询需求来调整上述示例中的字段和条件。
上一篇:布尔常量求值不产生预期的行为
下一篇:布尔查询格式错误。