0
ElasticSearch中有没有一种方法可以运行布尔过滤器,然后不进一步重新搜索搜索,根据multi_field查询对结果进行排序/排序?然后按ElasticSearch中的查询对结果进行排序
如:获取与status_id = 1
(过滤器)的所有项目,然后通过使用关键字“红车”(文档,其name
和description
包含这些关键字第一,文档,而在后的)命令的文档。
ElasticSearch中有没有一种方法可以运行布尔过滤器,然后不进一步重新搜索搜索,根据multi_field查询对结果进行排序/排序?然后按ElasticSearch中的查询对结果进行排序
如:获取与status_id = 1
(过滤器)的所有项目,然后通过使用关键字“红车”(文档,其name
和description
包含这些关键字第一,文档,而在后的)命令的文档。
您可以使用布尔查询 - 按条件应当的 -
子句(查询)应该会出现匹配的文件内。在没有must子句的布尔查询中,一个或多个should子句必须与文档匹配。可以使用minimum_should_match参数设置要匹配的最少的子句数。
在我们的案例中,因为必须和它的数字匹配,所以不会计算得分值。但随后应条件将被用于单独计算得分 -
{
"query": {
"bool": {
"must": [
{
"match": {
"status_id": 1
}
}
],
"should": [
{
"multi_match": {
"query": "red car",
"fields": [
"subject",
"message"
]
}
}
]
}
}
}
实际上,我是这样做的,减一两件事,我是做了“必须”作为过滤器,而不是查询的一部分。结果,应该是本身,并正在减少结果集。 – Ian