ElasticSearch中是否有办法运行布尔过滤器,然后在不进一步重新搜索的情况下,根据多字段查询对结果进行排序/排序?
例如:使用status_id = 1
(过滤器)获取所有项目,然后使用关键字" red car" (name
和description
包含这些关键字的文档是第一个,没有文档的文档是最后一个文档。
答案 0 :(得分:1)
你可以使用bool查询 - 根据应该的条件 -
子句(查询)应出现在匹配的文档中。在没有must子句的布尔查询中,一个或多个should子句必须与文档匹配。可以使用minimum_should_match参数设置要匹配的最小条件子数。
在我们的例子中,因为有必须和它的数字匹配,所以不会计算得分值。但是那时的条件将仅用于计算分数 -
{
"query": {
"bool": {
"must": [
{
"match": {
"status_id": 1
}
}
],
"should": [
{
"multi_match": {
"query": "red car",
"fields": [
"subject",
"message"
]
}
}
]
}
}
}