组合查询
组合查询可以将其它组合查询,以及其它单独的查询语句合并到一起,并将结果和匹配分数组合起来。它可以改变它们的行为,或是将查询转换为过滤条件。
这一组中的查询有:
-
包含其它查询的查询,但却以过滤器的形式执行该语句。所有匹配文档的匹配分数相同。
-
使用 must 、 should 、 must_not 或 filter 将多个查询或组合查询语句合并到一起。 其中 must 和 should 的得分会合并到一起,而 must_not 和 filter则在过滤器中执行。
-
一个接受多个查询的查询,并返回任何查询子句匹配的文档。
-
为了考虑到流行度、活跃度、距离和自定义脚本实现的算法,而使用函数修改主查询返回的分数。
-
这里查询条件将会分为正匹配和负匹配。正匹配到的文档将会加分,负匹配得到的文档将会减分。
bool查询
查看 Bool Query
boolQuery()
.must(termQuery("content", "test1"))
.must(termQuery("content", "test4"))
.mustNot(termQuery("content", "test2"))
.should(termQuery("content", "test3"))
//绝对匹配,不参与评分
.filter(termQuery("content", "test5"));
dis_max查询
disMaxQuery()
.add(termQuery("name", "kimchy"))
.add(termQuery("name", "elasticsearch"))
.boost(1.2f)
.tieBreaker(0.7f);
function_score查询
import static org.elasticsearch.index.query.functionscore.ScoreFunctionBuilders.*;
FilterFunctionBuilder[] functions = {
new FunctionScoreQueryBuilder.FilterFunctionBuilder(
matchQuery("name", "kimchy"),
randomFunction()),
new FunctionScoreQueryBuilder.FilterFunctionBuilder(
exponentialDecayFunction("age", 0L, 1L))
};
functionScoreQuery(functions);