我知道ElasticSearch使用relevance ranking algorithms,例如Lucene的tf/idf, length normalization and couple of more algorithms来对在文本字段上应用的术语查询进行排名(即搜索单词" medical" AND"期刊"标题"以及" body"字段)。
我的问题是ElasticSearch如何排名和检索过滤器或范围查询的结果(即年龄= 25,或权重> 60)?
我知道这些类型的查询只是根据条件过滤文档。但是,假设我有200个年龄字段值为25的文档。哪些文档将被检索为前10个结果?
ElasticSearch是否按照索引它们的顺序检索它们?
答案 0 :(得分:3)
来自Elasticsearch文档:
Filters:作为一般规则,应使用过滤器而不是查询:
Queries:作为一般规则,应使用查询代替过滤器:
因此,当运行“年龄= 25,或权重> 60”等搜索时,您应该使用过滤器。
但是 - 过滤器不会影响评分 - 例如,如果您只使用过滤器,则搜索结果将具有相同的分数。
有一个range query - 这是一个会影响得分的查询,我猜它会根据文档时间戳(最近获得更高分数)之类的内容对文档进行评分。
您需要进一步探索documentation并深入了解Lucene文档,以准确了解文档如何以及为何得分 - 但如上所述,您可能更好地使用不影响评分的过滤器