Query DSL: Query and filter
关联分数
关联分数用来衡量文档和查询条件的匹配度。默认情况下,es通过关联分数对匹配到的文档进行排序。
关联分数是一个大于0的浮点数,分数越高匹配度越高。关联分数的计算不仅因查询类型的不同而不同,还和查询语句是在Query context和filter context有关。
Query context
Query context 不仅回答了文档和条件是否匹配,还通过计算文档和查询条件的关联分数,回答了文档和条件的匹配程度。
Filter context
Filter context 仅仅回答了文档和查询条件是否匹配,不计算关联分数。
通常使用filters,es通常会自动缓存查询结果来提高效率。
项目总结
目前个人项目中没有需要分数的地方,Query DSL用到的是
Term-level queries:
Exists
Fuzzy
IDs
Prefix
Range
Regexp
Term
Terms
Terms set
Type Query
Wildcard
组合查询:
Boolean:
filter
must_not
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
boolQuery.filter(termQuery(fname,fvalue));
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(boolQuery)
.withPageable(pageable)
.withIndices(getIndex(idx))
.withTypes(type)
.build();
下一篇
Search APIs