复合查询编辑
复合查询包裹其他化合物或叶查询,要么把他们的结果和成绩,改变他们的行为,或者从查询过滤上下文切换。
这组查询:
-
查询这包裹另一个查询,但在过滤器上下文中执行它。
所有匹配的文档给出相同的“不变”
_score
. -
默认的查询组合多个叶子或复合查询子句,
must
,should
,must_not
,或filter
条款。 的must
和should
条款有成绩的总和——更匹配的条款,——而越好must_not
和filter
在过滤器上下文中执行条款。 -
接受多个查询的查询,并返回查询的匹配任何条款的文档。
而
bool
从所有匹配的查询,查询结合分数dis_max
查询使用最好的分数——匹配查询子句。 - 修改分数主要查询返回的函数来考虑受欢迎程度等因素,近因,距离,或自定义算法用脚本实现。
-
返回文档匹配
positive
查询,但是减少文档的得分也匹配negative
查询。 - 为指定的指标,执行一个查询,另一个用于其他指标。
-
的同义词
bool
查询。 -
结合查询子句的查询上下文在过滤器与另一个上下文。
[2.0.0]在2.0.0弃用。使用
bool
查询。 - 限制了每个实例的文档检查数量。
constant_score
查询
bool
查询
dis_max
查询
function_score
查询
boosting
查询
indices
查询
and
, or
, not
filtered
查询
limit
查询
常数分数查询编辑
常数分数查询编辑
看到常数分数查询
<span style="font-size:14px;">QueryBuilder qb = constantScoreQuery(
</span><pre><span style="font-size:14px;"> termQuery("name","kimchy") //1
)
.boost(2.0f); //2</span>
您的查询 | |
查询成绩 |
Bool查询编辑
看到Bool查询
QueryBuilder qb = boolQuery()
.must(termQuery("content", "test1")) //1
.must(termQuery("content", "test4")) //2
.mustNot(termQuery("content", "test2")) //3
.should(termQuery("content", "test3")); //4
必须查询 | |
不能查询 | |
应该查询 |
说马克斯查询编辑
看到说马克斯查询
QueryBuilder qb = disMaxQuery()
.add(termQuery("name", "kimchy")) //1
.add(termQuery("name", "elasticsearch")) //2
.boost(1.2f) //3
.tieBreaker(0.7f); //4
添加您的查询 | |
添加您的查询 | |
促进因素 | |
领带断路器 |
函数的分数查询编辑
看到函数的分数查询.
使用 ScoreFunctionBuilders
导入它们在你的类:
import static org.elasticsearch.index.query.functionscore.ScoreFunctionBuilders.*;
QueryBuilder qb = functionScoreQuery()
.add(
matchQuery("name", "kimchy"), //1
randomFunction("ABCDEF") //2
)
.add(
exponentialDecayFunction("age", 0L, 1L) //3
);
QueryBuilder qb = boostingQuery()
.positive(termQuery("name","kimchy")) //1
.negative(termQuery("name","dadoonet")) //2
.negativeBoost(0.2f); //3
// Using another query when no match for the main one
QueryBuilder qb = indicesQuery(
termQuery("tag", "wow"), //1
"index1", "index2" //2
).noMatchQuery(termQuery("tag", "kow")); //3
查询执行选定的指标 | |
选择的指标 | |
非匹配索引上执行查询 |
// Using all (match all) or none (match no documents)
QueryBuilder qb = indicesQuery(
termQuery("tag", "wow"), //1
"index1", "index2" //2
).noMatchQuery("all"); //3
QueryBuilder query = andQuery(
rangeQuery("postDate").from("2010-03-01").to("2010-04-01"), //1
prefixQuery("name.second", "ba")); //2
QueryBuilder qb = notQuery(
rangeQuery("price").from("1").to("2")
);
QueryBuilder qb = orQuery(
rangeQuery("price").from(1).to(2), //1
matchQuery("name", "joe") //2
);
QueryBuilder qb = filteredQuery(
matchQuery("name", "kimchy"), //1
rangeQuery("dateOfBirth").from("1900").to("2100") //2
);
QueryBuilder qb = limitQuery(100); //1
每个实例的文档数量 |